1 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 22:25:08.74 ID:/hGmbW/Z.net] 当スレに★Python以外のプログラミング言語での回答類を書くべからず★ 派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。 「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。 このスレッドは「お勉強」スレのほうには書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。 ★エラーを解決したい場合★は、 表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、 実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。 Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★ 【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、 プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。 ttps://techiedelight.com/compiler/ Run Code機能あり。 ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Python公式◇ www.python.org/ ◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi 〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その56 mevius.5ch.net/test/read.cgi/tech/1640536690/ 次スレたては >>985 あたりが挑戦する。 ### END OF TEMPLATE ###
152 名前:デフォルトの名無しさん [2022/06/23(木) 15:58:15.03 ID:EV0+4t37.net] >>147 Python 3.7.13で、macOS12.4 Montley上です。
153 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 11:43:47.67 ID:3JV7YPJq.net] socketのサーバー側で i=0 while True: data=soc.recv(受信サイズ) if not data: break data_sum+=data with open(f"保存するファイル名_{i}.zip",mode="ab") as f: f.write(data_sum) i+=1 みたいにするとクライアント側が送信したデータの他に数個のzipファイルが出来るんだけどこのデータの中身は何なんだろう? zipfileで開こうとするとエラー出力しちゃう 変数iを使わずに受信するとクライアントが送信したデータだけが残るみたいだけど…
154 名前:デフォルトの名無しさん [2022/06/24(金) 12:05:35.52 ID:K2we1Lar.net] >>150 死ね https://egg.5ch.net/test/read.cgi/bizplus/1655956236/
155 名前:名無し募集中。。。 mailto:sage [2022/06/24(金) 13:18:15.52 ID:d6WBxki6.net] FOR文の中にtqdm()を入れてみたんんですが 下記みたいなのしか表示されなくプログレスバーが表示されません 70786it [3:35:59, 1.94it/s] なにが問題なんでしょうか?
156 名前:デフォルトの名無しさん [2022/06/24(金) 14:31:40.66 ID:yJmddVFh.net] 実際のコードを書かないこと
157 名前:ぴよ [2022/06/24(金) 14:59:09.01 ID:XR8KeGTq.net] ほげほげ
158 名前:デフォルトの名無しさん [2022/06/24(金) 19:30:36.14 ID:n0/ceoPd.net] >>152 lenが不明なiteratorだとそうなる tqdm(iterator, total=100)のようにする
159 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:45:09.14 ID:/S8ogjuv.net] >>150 VSCode で、バイナリエディタの拡張機能・Hex Editor でも使って、バイナリとして見てみれば? 文字コードなどが不明なので、テキストとして見るには困る 適当に内容を作って、ファイルの拡張子を .zip にしても、 正しいZIPファイルの形式になるはずがないので、ZIPファイルとしては動作しない 各拡張子のファイルには、決められた構成があるため、 それに従っていない場合は、正常に動作しない
160 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 00:01:18.86 ID:eoWHGkrH.net] Phil Katz に聞くべき
161 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 00:11:42.65 ID:z9QRxAiq.net] 降霊術を習得しないと
162 名前:デフォルトの名無しさん [2022/06/25(土) 19:47:06.55 ID:fwnfW89W.net] Pythonでsetの要素がイミュータブルでないといけないのはなぜですか? a = [1, 2, 3] b = [4, 5, 6] c = [7, 8, 9] S = {a, b, c} a.append(0) この状況で、 a in Sの値が偽になっても別に構わないと思います。 Sに登録した時点でのaは{1, 2, 3}だったわけですから、 d = {1, 2, 3} d in Sが真になりさえすれば何もおかしなことはないと思います。
163 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:57:20.22 ID:I0eUacPf.net] S = {a,b,c} TypeError: unhashable type: 'list'
164 名前:デフォルトの名無しさん [2022/06/25(土) 20:23:18.44 ID:bZig/WUT.net] こういう馬鹿が辞書のキーにまでリスト入れたいとか言い出すんだろうな
165 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 20:26:09.88 ID:gQjoPRQF.net] >>159 Pythonのオブジェクトは基本参照だし、setに突っ込んでもコピーされる訳じゃない 重複を許さないsetの要素が変更されたら保証できないし、比較のコストも考えたら…かな
166 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 20:36:01.58 ID:9jpr7vFN.net] >>159 自作クラスとか、mutableでもsetに突っ込めるよ。 何か読み違えたのでは?
167 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:18:41 ID:gQjoPRQF.net] >>163 本質的にはそうじゃない、ユーザークラスは既定でハッシュ化できるが これは一般的な実装ではid()、即ちインスタンスアドレスに基づくもの 実質的に求められているのはハッシュの不変性であり、それならば通る しかし同一性を内容で評価するなら意味は成さないのでlistだと未定義 データモデル曰く「クラスがミュータブルなオブジェクトを定義しており、 __eq__() メソッドを実装しているなら、 __hash__() を定義してはなりません。」
168 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 01:34:01.17 ID:A2gDvo6x.net] やってやれないことはないけど デメリットを打ち消すだけのメリットを見いだせなかったんでしょGuidoが 単に他の言語のdict/setに合わせただけかも知れんが ともかく、真実が知りたかったら開発者に聞いてこいよ
169 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 07:16:45.51 ID:eSuyoUi6.net] >>95 print('QHG pj.og.ldn.iakkok:etis'[::-1], '/elpmis/pj.og.ldn.iakkok//:sptth'[::-1], sep='\n')
170 名前:デフォルトの名無しさん [2022/06/26(日) 13:31:03.88 ID:DTfGvOZF.net] ねんまつ
171 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:09:04 ID:Zqv939YP.net] PCでのアプリ操作を自動化したいのですが、pyocrで文字認識して、内容によって判断し、pyautoguiでxy座標指定して、ボタン押すしかないでしょうか?
172 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:14:55.95 ID:RN7qnQjk.net] 物によるとしか言いようが無いな
173 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:17:13.06 ID:RN7qnQjk.net] PyAutoGui でカバー出来るか出来ないかを判断してみたら?
174 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 18:27:20 ID:3qzf3wBJ.net] 以前MACにいれたpython3を削除できないです。 % rm -rf /usr/bin/python3 rm: /usr/bin/python3: Read-only file system % sudo rm -rf /usr/bin/python3 Password: rm: illegal option -- ? usage: rm [-f | -i] [-dPRrvW] file ... unlink file 原因わかる方いますか?
175 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 18:53:43.40 ID:0yF6vhsn.net] >>171 sudoのほうは全角スペースが入ってるのが原因
176 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 19:05:21.65 ID:a8sMrZjJ.net] 172の優しさに感動
177 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 19:25:49.92 ID:cL/RIHXE.net] そのpython入れたのはAppleだから通常起動したOSからは削除できない仕組み 消えたらOS内のスクリプトが動かなくなるよ よかったねOSが壊れなくて
178 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:20:17.78 ID:3qzf3wBJ.net] >>172 迅速なレスありがとうございます。 もう一度コメント打ちましたが同じ結果でした。全角は入ってないようです。 >>174 MACから元々インストールされているのはphyon2なので Phyon3とは関係ない、削除しても問題ないと思うのですが.. https://i.imgur.com/PpXh6yu.png
179 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:45:49.02 ID:xsOnLI+U.net] >>175 何経由でインストールしたんだこれ Homebrew使ってインストールしたなら brewコマンド経由でアンインストール出来ない?
180 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 21:25:48.96 ID:cL/RIHXE.net] >>175 python3入ってないmacOSってわりと古いよ? ここ最近はpython2が逆に入ってない(公式サポート終わってるからね) もし自前で /usr/bin にインストールしたってんならクラッカー気質あるわw
181 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 21:44:39.26 ID:XFwxgXBL.net] >>175 同じ結果とちゃうやん 全角入ってた時とエラーメッセージ変わってるやん どうしても削除したいならSIP無効にしてから削除で
182 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 22:13:08.24 ID:3qzf3wBJ.net] >>175 追記 すみません自分の勘違いでこのpython3はデフォルトから入ってるファイルのようです。 >>177 さんの仰る通りでした。申し訳ありません。 そして再度インストールしようとhomebrewを入れpyenvを入れ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc を追加し source ~/.zshrcを実行してpython3.10.4をインストールするとうまくいきません。。おまかんなのでしょうか?? https://i.imgur.com/ErhCpgK.jpg
183 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 22:13:29.06 ID:3qzf3wBJ.net] >>178 申し訳ありません。
184 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 01:52:22.87 ID:GjoTbrJZ.net] >>179 自決ですが、xcodeが古かったので新しいバージョンにいれた所無事インストールできました。
185 名前:デフォルトの名無しさん [2022/06/28(火) 08:26:42.80 ID:UgaAibo1.net] またしても犠牲者が。 pythonの乱用は精神に作用するのかもしれない
186 名前:デフォルトの名無しさん [2022/06/28(火) 12:11:58.39 ID:W8L8uteA.net] macのOS環境ごとふっとんで死ねば良いのに
187 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 12:22:02.22 ID:SMUgtqGT.net] 日本人が作った、多言語バージョンマネージャーのanyenv を使えばよい。 同様のツールには、asdf もある nodenv, pyenv, rbenv, exenv, goenv, tfenv など node, python, ruby, elixir, go, terraform など 他には、Docker も多い
188 名前:デフォルトの名無しさん [2022/06/28(火) 13:58:17.02 ID:5S91HeIj.net] re.subで[]で囲まれた文字列の中を置換するとき、どんな記述をすればよいですか? re.sub(r'\[.*c.*\], 'x', '[abcabc]abc') 期待する値 [abxabx]abc
189 名前:デフォルトの名無しさん [2022/06/28(火) 14:07:39 ID:N3XtpiKU.net] >>185 re.sub(r'\[[^\]]*\]', lambda m: m[0].replace('c', 'x'), '[abcabc]abc')
190 名前:185 [2022/06/28(火) 14:31:31.24 ID:5S91HeIj.net] >>186 多謝!! そしてごめんなさい。良ければ解説を。
191 名前:185 [2022/06/28(火) 14:49:53.04 ID:5S91HeIj.net] []の中だけを対象にreplaceしているのは、なんとか分かるんですが、re.sub の第2引数、 lambda m: m[0].replace('c', 'x') が何をしているのかわかりません(泣)
192 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 14:52:51.94 ID:dX7Zsa+9.net] マニュアルを読もう https://docs.python.org/ja/3/library/re.html#re.sub
193 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 14:59:09.76 ID:d3+RKzUY.net] repl が関数であれば~の下りね、m[g]はm.group(g)と同等 後読みアサーションに固定幅制約がないライブラリなら 面倒なことしなくても(?<=\[.*)c(?=.*\])で済みそうだが
194 名前:デフォルトの名無しさん [2022/06/28(火) 15:42:31.79 ID:5S91HeIj.net] re.sub(r'\[.*\]', lambda m: m.group(0).replace('c, 'x') でlambda関数がヒットするたび呼ばれるわけか!! 仕組みは理解できました。 >>190 look-behind requires fixed-width pattern に阻まれました。
195 名前:デフォルトの名無しさん [2022/06/28(火) 19:31:26.15 ID:mooH0Iqw.net] m.group はめんどくさい findall の方が便利
196 名前:デフォルトの名無しさん [2022/06/29(水) 07:52:27.56 ID:9vdu/PbE.net] >192 re.findall だと re.sub のような仕掛けが利用できなくないですか? >185 できますか??
197 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 10:56:55 ID:CtIvUBkO.net] re.findallで[]付きとそれ以外に分けて処理 ちょっと長くなるけど色々応用がききます # []の中だけreplace >>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]') ['a', '[abcabc]', 'abc', '[abc]'] >>>[m.replace('c', 'x') if m[0]=='[' else m for m in _] ['a', '[abxabx]', 'abc', '[abx]'] >>>''.join(_) 'a[abxabx]abc[abx]' # []の中以外をreplace >>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]') ['a', '[abcabc]', 'abc', '[abc]'] >>>[m.replace('c', 'x') if m[0]!='[' else m for m in _] ['a', '[abcabc]', 'abx', '[abc]'] >>>''.join(_) 'a[abcabc]abx[abc]'
198 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:29:51.42 ID:CtIvUBkO.net] 完成形できました!記号が含まれていても[]がちゃんと閉じてなくても ちゃんと閉じているのだけreplaceします >>186 が秀逸だけど、[]で囲まれていない方をreplaceするとなると 途端に難しくなるから、やっぱ私の方法が良いんじゃないでしょうかw >>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc]') ['', 'a', '[abcabc]', '', 'abc', '[abc]', ''] >>>[m.replace('c', 'x') if m and m[0]=='[' else m for m in _] ['', 'a', '[abxabx]', '', 'abc', '[abx]', ''] >>>''.join(_) 'a[abxabx]abc[abx]' # 文字列に記号が含まれていて[]がちゃんと閉じていなくても大丈夫 >>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc$$[abc]') ['', 'a', '[abcabc]', '', 'abc', '[', '', 'abc$$', '[abc]', '']
199 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 22:12:59.69 ID:sd1PgpdM.net] 見通し悪すぎて要件満たしててもレビューで蹴られるコード
200 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 22:25:07.73 ID:TQFqK5Fi.net] ちゃんと閉じているの定義があやしい [[abc]とか
201 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 23:13:54 ID:CtIvUBkO.net] >>196 見通し良いでしょ、角カッコで囲まれた角カッコ以外 or 角カッコ or 角カッコ以外でfindallじゃん 角カッコしか出てこないじゃん、簡潔、シンプル、分かりやすい >>197 良い指摘、アナタのおかげで改善されました^^ >>>re.findall(r'\[[^\[\]]*\]|[\[\]]*?|[^\[\]]*', 'a[abcabc]abc[[abc]') ['', 'a', '[abcabc]', '', 'abc', '', '[', '[abc]', '']
202 名前:デフォルトの名無しさん [2022/06/30(木) 02:06:34.63 ID:HSayXmFT.net] kazuyuki
203 名前:デフォルトの名無しさん [2022/06/30(木) 20:55:30.42 ID:QXLJbWFQ.net] ナンプレのゲーム作りたい 縦横はチェックする方法わかるが 3x3マスの部分だけ配列で考える方法がわからない ↓までは考えたんだが方向性が違う気もする https://techiedelight.com/compiler/?xIkw 9進法から3進法への変換がベース(ただし3進法は0から始まる) for x in range(81) x // 3 x % 3 3桁目に入る場合、1桁目に(3桁目)*3が足される 10 (1,0,0)→(0,3) 4桁目に入る場合、2桁目に(4桁目)*3が足される 28 (1,0,0,0)→(3,0)
204 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 21:46:07.32 ID:0uxZVqVl.net] 簡単なのは3x3を座標系とは別の9マスの配列の配列として保持 置いたとき
205 名前:ノ縦横とは別にその配列へ反映させる 縦横も同じ手法をとると統一感ある コード上は9マスの配列はクラスにするかも [] [ここ壊れてます]
206 名前:デフォルトの名無しさん [2022/06/30(木) 22:01:04.82 ID:zKJ67H3+.net] 5桁8色のhit&blowを造りたい 人間が設問してpythonに解かせたい
207 名前:デフォルトの名無しさん [2022/07/02(土) 07:54:20.82 ID:oFwScFTn.net] >>201 既存の座標系にこだわらないほうがいいか ありがとう ナンプレのゲーム作りたいから手始めにナンプレを解くプログラムの検証をしてたんだけど https://techiedelight.com/compiler/?b-I8 37行目の部分ってどうなってるの? 再帰関数なのはわかるんだけど、if文の中で再帰してるじゃん def 関数(): if 再帰関数(): retrun Ture retrun Flase
208 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:00:34.91 ID:Zph8lW04.net] >>203 再帰だけどやってることは探索のための分岐 rangeの列挙からcontinueされなかった分を順番に分岐してて 呼んだ先で18-20にひっかかると中断して最初の呼び出しまで戻ってる deepcopyしてるところが富豪的だけどシンプル
209 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:39:17.61 ID:EefHjxyZ.net] >>204 この37行目 if set_num(ndata, idx + 1): return True これを set_num(ndata, idx + 1) に変えてみたんだけど結果変わらなかった if の中に入れる意味あるの?
210 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:44:12.51 ID:EefHjxyZ.net] 答えが出た後も探索しちゃうからそれを止めるための処理ってことか
211 名前:デフォルトの名無しさん [2022/07/02(土) 09:57:44.64 ID:COZLaCzb.net] ninbe
212 名前:デフォルトの名無しさん [2022/07/11(月) 12:19:00 ID:aiHSnYNz.net] google colabでcuda使いたい。 良い方法ある?
213 名前:デフォルトの名無しさん [2022/07/11(月) 12:19:00 ID:aiHSnYNz.net] google colabでcuda使いたい。 良い方法ある?
214 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 12:39:20.78 ID:L4tB3bvp.net] 金払ってないのか?
215 名前:デフォルトの名無しさん [2022/07/11(月) 14:48:46.26 ID:aiHSnYNz.net] >>210 colabはdjangoやfraskができないっぽいからやってない。 もしdjangoが使えるならお勧めあったら教えてほしいっす! vsかチャームか、atomか・・・。
216 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 15:51:00.64 ID:EGP2A4JX.net] 好きなテキストエディタないの?それで基本いいんだけど 拘りないなら拡張とユーザ数からvscodeでいいんじゃない PyCharmはリファクタまわりが優れているけど必須じゃないし Atomはオワコン
217 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 17:35:44.11 ID:rDGcpouH.net] vsもマイクロソフト以外のプラグインが信用出来ないからあまり良いとは言えないかなー
218 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 00:04:57.18 ID:eIaiUALg.net] 文字列〜〜〜ID123456.text みたいなファイルからID123456だけを抜き出したいんだけど、どんな方法がある? IDの後には必ず数字がきて、桁数はかならず6
219 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 00:06:23.62 ID:eIaiUALg.net] 補足 IDが書かれてる場所はファイルによって異なる 文字列〜〜〜ID123456文字列〜.text ID123456文字列〜〜〜.text みたいなときもある
220 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 02:57:47 ID:yBYukR5V.net] >>214 普通は正規表現でも使うのかな 俺は正規表現使えないからこう書く from pathlib import Path p="C:\abc\あいうID1234567XYZ.text" print("ID" + Path(p).stem.split("ID")[1][:6])
221 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 08:19:17.52 ID:hTnf4I/y.net] >>215 正規表現を制する者は文字列を制する、他の言語でも仕様はほぼ同じ、覚えて損は無し >>>import re >>>s='''文字列〜〜〜ID123456文字列〜.text ・・・ID789012文字列〜〜〜.text ・・・みたいなときもある''' >>>re.findall(r'ID\d{6}', s) ['ID123456
222 名前:', 'ID789012'] [] [ここ壊れてます]
223 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 10:53:36 ID:eIaiUALg.net] >>216 >>217 ありがとうございます、勉強になります
224 名前:デフォルトの名無しさん [2022/07/12(火) 20:48:55 ID:gRW1mfOh.net] 例外処理ってどう使えばいいんだろ スクレイピングしてあるサイトのデータ拾いに行って ”データ”がある場合に代入となるんだけど 拾いに行くページによって、その行自体がなくてエラーになってしまうんだよな if Data[0][0] == ”データ”: s = Data[0][0] Data[0][0]がそもそも存在しない時にエラーにならないよう例外処理を使うといい、ぐらいまでは調べたんだけど 書き方がよくわからない
225 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 21:11:11 ID:hTnf4I/y.net] >>218 より具体的な例としてC:/hogehogeディレクトリ内の全ファイルのファイル名からIDを抜き出します >>>import pathlib, re >>>src = pathlib.Path('C:/hogehoge') >>>list(src.glob('*')) #ファイル確認、この例ではディレクトリ内にファイルが2つあります [WindowsPath('C:/hogehoge/ID789012文字列〜〜〜.text'), WindowsPath('C:/hogehoge/文字列〜〜〜ID123456文字列〜.text')] # 以下、ID抜き出し処理 >>>l = [re.findall(r'ID\d{6}', f.name) for f in src.glob('*')] >>>l [['ID789012'], ['ID123456']] >>>sum(l, []) #フラット化 ['ID789012', 'ID123456']
226 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 21:56:43.39 ID:UQgGu1pu.net] >>219 データがなかった場合にどう処理したいのかによって 例外処理にするのかif-elseみたいな分岐処理にするのかを選択する スクレイピングの場合は対象データがなかったら 何も処理しないとか空文字とかのデフォルト値を入れる場合が多いんだけどそのやり方もいろいろ if-elseで簡易的な関数にした例 def extract(html, selector, fn, default=""): return fn(element) if (element := html.select_one(selector)) else default def extract_text(html, selector, default=""): return extract(html, selector, lambda x: x.text.strip(), default) def extract_link(html, selector, default=""): return extract(html, selector, lambda x: x.get('href'), default)
227 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 22:40:42.84 ID:xLkMA/UK.net] >>219 スクレイピングでたとえると 途中の要素が取得できないと結局な結果が得られないのでその場でプログラム終了する とすると、取得失敗の都度ifでsys.exit()と書けはする ここで終了前になにかメッセージ出力したり上位の関数にエラーで戻ったりアレコレしたいとすると 共通化したくなり例外以外では見通しが悪く書きにくい そういうのもうまく関数設計すれば書けはするけど Pythonは標準の操作(Data[0][0] とか)で例外あげる場面が多いので例外に寄せる方が楽
228 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 20:23:40.86 ID:EtP8dxEe.net] Pythonのトップ・キノコードがキノクエストと言う、Pythonの学習サービスを作った!
229 名前:デフォルトの名無しさん [2022/07/13(水) 22:27:14.03 ID:XjBOe/Qa.net] s = ’aaa bbb ccc ddd’ という文字列を s = ’[aaa],[bbb],[ccc],[ddd]’ という文字列にする方法って s.split() で一度リストにして for文内で新しいリストにappendとか使って [ や ] や , をリストの要素として追加して そのリストをまた文字列に戻すって方法しか思いつかないんだけど、他にあるかな?
230 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:38:12.38 ID:ZiN6uKeA.net] >>224 s = '[' + s.replace(' ', '],[') + ']'
231 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:42:11.0
] [ここ壊れてます]
232 名前:0 ID:tPrODk9K.net mailto: s='[' + s.replace(' ',']',[') + ']' これでいけんか? [] [ここ壊れてます]
233 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:43:26.48 ID:tPrODk9K.net] かぶったし打ち間違いあるしスマホでコード書くの合わないな…
234 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:44:17.92 ID:hJXXd+YV.net] “,”.join(map(lambda x:f”[{x}]”, s.split(“ “))) そらで書いてるから動くか分からんが、こんな感じ
235 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:46:15.33 ID:tPrODk9K.net] あと方法としてはjoin使うのとリストをそのまま文字列にするのができる気がする
236 名前:デフォルトの名無しさん [2022/07/13(水) 22:53:13.90 ID:XjBOe/Qa.net] >>225-229 マジか 思いつかなかった
237 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 23:08:11.77 ID:Hjnw35/j.net] 教科書的に書くとつまらんな ','.join(f'[{x}]' for x in s.split(' '))
238 名前:デフォルトの名無しさん [2022/07/14(木) 10:16:40.49 ID:dxotV0yq.net] くだらんすれ
239 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 11:38:32.14 ID:3XfxOzel.net] python使い始めて何年も経つが ‘,’.join(…)書くたびにクソコード書いてんなと思う
240 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 12:12:10.59 ID:mZF8rPll.net] >>233 よく言われるけど、私はPythonスタイルが好きだな 文字列にするのだから文字列のメソッドであるべき ちゃんと議論されてRubyスタイルは否定されてんだよね ttps://www.lifewithpython.com/2017/07/why-python-join-is-string-method.html
241 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 16:24:53.41 ID:NrPRW2+E.net] >>234 読んだけど結構乱暴な議論だな > 文字列にするのだから文字列のメソッドであるべき 数字かどうかを判定するisdigit()をboolのメソッドにしろってか?w
242 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 16:42:14.94 ID:VCUQdsgR.net] >>234 じゃsplitはリストにするのだからリストのメソッドであるべきだなw ちゃんと議論ww
243 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 17:24:02.64 ID:TABkZ95a.net] Pythonって何故だかこういうエクストリームな擁護者が他言語に比べて多いんだよなぁ どの言語にも良い点悪い点はあるのになんでなんだろ?
244 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 17:57:33.90 ID:mZF8rPll.net] エクストリームな擁護ならRubyの右に出るものはないよ 「日本人ならRuby」「楽しいからRuby」だもん、初めて聞いた時は寒気がしたね RubyじゃなくてPython選んでマジで良かった、Python最高! joinもsplitの話ももう出尽くしているから、勝手にググってフンガーって発狂しててよ 私に言われても困っちゃうし、公式で結論出ているのだからそれで理解できないなら素養が無いよ
245 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 18:15:53.09 ID:ObgbLbGZ.net] あ~あ、みんな寄ってたかって叩くからファビョっちゃったじゃん
246 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 18:18:53.53 ID:ATT2arO1.net] >>237 pythonのスレ(しかも超初心者用)で言うことですか?
247 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 18:40:20.64 ID:NYmoorKP.net] 超初心者に変な常識を植え付けないように色んな意見のレスがあっていいと思うよ 変だと思う人も居るんだなということを知ってて損は無い 超初心者だと他言語における常識を知る機会も無いし
248 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 19:04:20.42 ID:ji0JpZgM.net] >>238 > 私に言われても困っちゃうし これお前の意見だろ? > 文字列にするのだから文字列のメソッドであるべき リンク先も公式もそんなアホなことを言ってないぞw
249 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 19:09:23.50 ID:mZF8rPll.net] >>242 ひゃーファビョッちゃってるぅーw 素養も読解力も無いことをアピールされましても困りますw
250 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 19:51:42.67 ID:/4X/rYOa.net] >>243 レスするならちゃんと反論したら? 読解力ガーとか低脳が顔真っ赤になりながらレスしても虚しいだけだろw
251 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木)
] [ここ壊れてます]
252 名前:20:59:57.30 ID:jjxIhgjT.net mailto: スレ違い自演連投荒らしが誰何に反応して身元確定したので新スレで書き込み禁止されたのを「いじめ」だと言い出す被害妄想っぷりが狂人クオリティ [] [ここ壊れてます]