21/12/08 16:12:58.05 5HATgl/c0.net
m = re.search('pattern', str)
if m:
item = m.group(1)
みたいには書けるけど、ifの中にmの取得を一緒に書けない?
そうでないと、if elif elseで書けない
375:デフォルトの名無しさん
21/12/08 16:16:26.00 Z7ccVyDn0.net
昔のpythonでは書けなかったんですが
python3.8からassignment expression := ができるようになりました
376:デフォルトの名無しさん
21/12/08 16:22:47.75 5HATgl/c0.net
おおー、できるのか
でもうちのは3.7だからできないわ
会社のは3.6だからもっとできない
変な互換性のなさを作り込むよりは、3.6でもやれる方法を考えよう
377:デフォルトの名無しさん
21/12/08 16:31:06.57 cmZgcxZR0.net
>>370
各変数を別途取得して、subprocess.runで起動するアプリの引数として与えるだけ
自分で引数をオプションとして与えたいなら、argparseを使う
378:デフォルトの名無しさん
21/12/08 16:31:50.71 lsXABI8+d.net
item = data.get(1)
if item:
id(item)
#3.8
if item:= data.get(1):
id(item)
379:デフォルトの名無しさん
21/12/08 16:51:20.77 e5XneN8e0.net
pythonの野郎宗旨替えしやがったのか
380:デフォルトの名無しさん
21/12/08 17:00:08.30 cmZgcxZR0.net
>>374
スコープの話なら、関数こさえてreturnで拾うという手もあるけど、めんどくさいね
381:デフォルトの名無しさん
21/12/08 17:02:23.43 5HATgl/c0.net
無駄な処理は増えるけど
m1 = re.~
m2 = re.~
としておいてから、
if m1:
elif m2:
なら書ける
代入が評価もできる仕組みは、書き間違えてバグるからというよりは、
単純に読みにくくなる
382:デフォルトの名無しさん
21/12/08 17:12:25.01 +2BbFlMUa.net
Pythonのifのスコープは脳に優しくないな
383:デフォルトの名無しさん
21/12/08 17:22:50.60 aaXV5Kk80.net
プライベートだと思っていた彼女のホールがグローバルだった
384:デフォルトの名無しさん
21/12/08 19:30:48.14 5HATgl/c0.net
入力行をsplitして取り込む
arg1, arg2, arg3 = line.split('\t')
みたいな感じ
でも、入力がちゃんとしてなくて数が多くても少なくてもエラーになる
そこはよしなにやって欲しい
足りない部分はNoneで埋めて、余った分は捨てていい
というええかげんなことをしようと思ったら、ええかげん関数を作るしかないのかな
385:デフォルトの名無しさん
21/12/08 19:35:03.01 lsXABI8+d.net
hash = {'ぐれ':1, 'ぷ':2}
matched = m.group(1)
if not hash.get(matched):
print('i want to write else case')
elif hash[matched]== 1:
print('do 1 case')
???
386:デフォルトの名無しさん
21/12/08 21:14:52.99 /jR8/f4s0.net
>>384
arg1, arg2, arg3, *_ = line.split('¥t') + [None, None]
387:デフォルトの名無しさん
21/12/08 23:31:45.91 5HATgl/c0.net
+ でいいんだな
388:デフォルトの名無しさん
21/12/09 02:15:13.68 WjLFVkiy0.net
すみません、質問なのですが、
newline= ってpython3じゃないと使えないのですか?
389:デフォルトの名無しさん
21/12/09 02:26:38.04 y+vTbIG00.net
調べてから質問してる?
390:デフォルトの名無しさん
21/12/09 02:29:06.32 WjLFVkiy0.net
してる
391:デフォルトの名無しさん
21/12/09 05:36:26.42 .net
"newline= を使う"ってなに?
文字列の中に改行コードは使えるか
って意味じゃないよね
それだとそっこーぐぐったら出てくるし。
なんかのライブラリやらフレームワーク的な話なのだろうか
392:デフォルトの名無しさん
21/12/09 05:39:43.24 .net
あるいはクロスプラットフォームでのCRLFかLFかみたいな話かな
393:デフォルトの名無しさん
21/12/09 06:51:10.51 7v43kIFS0.net
openのオプションでしょ
394:デフォルトの名無しさん
21/12/09 08:02:22.78 I94H5Ioy.net
>>388
python3.8.1
URLリンク(techiedelight.com)
python2.7.17
URLリンク(techiedelight.com)
395:デフォルトの名無しさん
21/12/09 08:48:12.08 zIpIn5ri0.net
beautifulsoupでattributeerror: nonetype nas no attribute stringが発生するんだけどnoneになることが想定される場合は一々いっこっこifでかこってやらないとだめなの?
396:デフォルトの名無しさん
21/12/09 08:56:56.15 zIpIn5ri0.net
ifっていうかtryか
397:デフォルトの名無しさん
21/12/09 08:59:10.31 7v43kIFS0.net
最大限何でも見つかるようにしとくから、緩めるのはユーザ側でやってね
という姿勢は間違ってないんだけどな
元から緩かったら厳しくしようがない
398:デフォルトの名無しさん
21/12/09 09:52:10.18 q+Lg0FmZ0.net
自分の管理できないデータを拾おうとする場合は
例外処理は必須だと思う
399:デフォルトの名無しさん
21/12/09 10:42:48.76 WjLFVkiy0.net
>>394
ありがとうございます!!!
400:デフォルトの名無しさん
21/12/09 11:32:41.22 LJEXrIakM.net
>>395
ifかor
Pythonにはsafe navigation operatorがないからスクレイピングコードは煩雑になりがち
URLリンク(en.wikipedia.org)
要素がなければ空文字のようなデフォルト値を返す汎用的関数を自分で用意すると少し読みやすくなる
401:デフォルトの名無しさん
21/12/09 11:51:24.51 q+Lg0FmZ0.net
JSONなんかだと、get()で拾えばまぁ困らんな
402:デフォルトの名無しさん
21/12/09 11:58:39.98 LJEXrIakM.net
BeautifulSoupじゃなくてScrapyなら少しマシ
公式ドキュメントの質は段違い
403:デフォルトの名無しさん
21/12/09 12:37:45.04 LJEXrIakM.net
>>401
指定した要素がない状況を考慮する必要があれば階層ごとに自分でハンドリングが必要だからgetだけじゃダメなんだよね
safe navigation operatorがあればlodashのgetやrubyのdigのようなのが簡単に作れる
近いところでglomがあるけど処理を分割したり、つなげたりできないから使い勝手が悪い
404:デフォルトの名無しさん
21/12/09 14:43:48.67 kmW2UpC80.net
bsのドキュメントってなんであんな書き方なんかな