当スレに★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公式◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi
〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その56
http://mevius.5ch.net/test/read.cgi/tech/1640536690/
次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
探検
【まず1嫁】くだすれPython(超初心者用) その57
■ このスレッドは過去ログ倉庫に格納されています
2022/05/22(日) 22:25:08.74ID:/hGmbW/Z
128デフォルトの名無しさん
2022/06/20(月) 00:51:48.01ID:3bt1t/j5129デフォルトの名無しさん
2022/06/20(月) 09:01:28.64ID:clQvML/w picture(数字).pngで連番のファイルを生成したんだけどpathlibでディレクトリの中身覗くと
picture0.png
picture1.png
picture3.png
picture2.png
picture4.png
みたいな順番になってる事があってなんだか気持ちが悪い
これって何が原因なんです?pathlibの仕様?
picture0.png
picture1.png
picture3.png
picture2.png
picture4.png
みたいな順番になってる事があってなんだか気持ちが悪い
これって何が原因なんです?pathlibの仕様?
130デフォルトの名無しさん
2022/06/20(月) 10:51:33.24ID:bmv2finQ iterdir()とiterdir()が使ってるos.listdir()の仕様
131デフォルトの名無しさん
2022/06/20(月) 10:52:01.17ID:NopO3X5I lenovoのL420っていうノートパソコン使っています
celeron,4GBです
教科書レベルのプログラムを写経してます
画像ファイル256枚、一枚あたり30kb位のファイルを
重ねる画像処理をpythonで行っているのですが
MemoryErrorがでて処理が止まります
画像処理の分野ではよくあることなのでしょうか
メモリ空きスロットが無いです
今までメモリ不足なんて無かったのですが
PC買い替えでしょうか?
celeron,4GBです
教科書レベルのプログラムを写経してます
画像ファイル256枚、一枚あたり30kb位のファイルを
重ねる画像処理をpythonで行っているのですが
MemoryErrorがでて処理が止まります
画像処理の分野ではよくあることなのでしょうか
メモリ空きスロットが無いです
今までメモリ不足なんて無かったのですが
PC買い替えでしょうか?
132デフォルトの名無しさん
2022/06/20(月) 11:06:40.33ID:VCuoWLch133デフォルトの名無しさん
2022/06/21(火) 19:48:14.54ID:BPheRP/d #次のような集合のリストのリストrを作りました:
r = [[set(range(1,4))]*3]*3
> print(r)
[[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}]]
#上から2番目、左から3番目の集合を更新して要素を1のみとしました:
r[1,2] = {1}
#するとr[0,2]とr[2,2]も{1}になっちゃいました:
> print(r)
[[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}]]
r[1,2]以外が変わった原因と、r[1,2]以外が変わらないような方法教えて下さい
r = [[set(range(1,4))]*3]*3
> print(r)
[[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}],
[{1,2,3}, {1,2,3}, {1,2,3}]]
#上から2番目、左から3番目の集合を更新して要素を1のみとしました:
r[1,2] = {1}
#するとr[0,2]とr[2,2]も{1}になっちゃいました:
> print(r)
[[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}],
[{1,2,3}, {1,2,3}, {1}]]
r[1,2]以外が変わった原因と、r[1,2]以外が変わらないような方法教えて下さい
134デフォルトの名無しさん
2022/06/21(火) 20:00:56.97ID:BPheRP/d >>133 訂正
r[1,2]じゃなくてr[1][2]でした (他同様)
r[1,2]じゃなくてr[1][2]でした (他同様)
135デフォルトの名無しさん
2022/06/21(火) 20:03:33.86ID:nUT03NU2 deepcopyで検索ゥ
136デフォルトの名無しさん
2022/06/21(火) 20:08:37.10ID:SE7t042v [[set(range(1, 4)) in x for range(3)] in y for range(3)]
137デフォルトの名無しさん
2022/06/21(火) 20:18:32.01ID:SH7wWIQd >>133
多次元のリストを作るにはどうしますか?
https://docs.python.org/ja/3/faq/programming.html#faq-multidimensional-list
多次元のリストを作るにはどうしますか?
https://docs.python.org/ja/3/faq/programming.html#faq-multidimensional-list
138デフォルトの名無しさん
2022/06/21(火) 20:18:51.87ID:BPheRP/d139デフォルトの名無しさん
2022/06/22(水) 11:44:54.88ID:EcTc17L7 ほとんどの言語は、shallow copy
実体をコピーしない。
ポインター・参照しかコピーしない
実体をいじると、それを参照している全ての参照に影響が出る。
実体を参照を通して見ているから
なかなか簡単には、deep copy できない。
参照のリンクを切り離せない
Elixir みたいな関数型言語は、
オブジェクトを更新できない(状態を持てない)から、
こういう問題はなく、安全にプログラミングできる
実体をコピーしない。
ポインター・参照しかコピーしない
実体をいじると、それを参照している全ての参照に影響が出る。
実体を参照を通して見ているから
なかなか簡単には、deep copy できない。
参照のリンクを切り離せない
Elixir みたいな関数型言語は、
オブジェクトを更新できない(状態を持てない)から、
こういう問題はなく、安全にプログラミングできる
140デフォルトの名無しさん
2022/06/22(水) 12:13:41.31ID:TN4B0obT なんかさ、もううんこだよね
141デフォルトの名無しさん
2022/06/22(水) 21:49:37.76ID:kEl16R0O 特定のフォルダ以下のサブフォルダから拡張子を取得して
指定したフォルダ下に拡張子のフォルダを作りたくて
下記のプログラムを書いたところで動作しましたが
os.makedirs文のみで完結する簡素な記述方法はありますか?
cd_path ← フォルダを作りたい場所
file_extension ← FOR文で取得した拡張子
path = os.path.join(cd_path, file_extension)
os.makedirs(path, exist_ok=True)
指定したフォルダ下に拡張子のフォルダを作りたくて
下記のプログラムを書いたところで動作しましたが
os.makedirs文のみで完結する簡素な記述方法はありますか?
cd_path ← フォルダを作りたい場所
file_extension ← FOR文で取得した拡張子
path = os.path.join(cd_path, file_extension)
os.makedirs(path, exist_ok=True)
142デフォルトの名無しさん
2022/06/22(水) 22:14:47.11ID:1aHzqpDi143デフォルトの名無しさん
2022/06/22(水) 23:39:08.69ID:uPuQk0KY みんな一時は罹ってしまうコードゴルフ
中二病にちかい
中二病にちかい
144デフォルトの名無しさん
2022/06/23(木) 00:13:39.08ID:RPGBecSe 配列(array)の要素それぞれにリストを入れることは出来ない?
リストの要素それぞれに配列を入れることはできる?
でいいのかな?
リストの要素それぞれに配列を入れることはできる?
でいいのかな?
145デフォルトの名無しさん
2022/06/23(木) 00:24:13.97ID:RKdZXyYS あまりやらないけれど
配列の要素はそれぞれ任意のものを入れられるから
最初に配列、次に文字列でもすきなクラスでも大丈夫
もちろんぜんぶ配列でもOK
配列の要素はそれぞれ任意のものを入れられるから
最初に配列、次に文字列でもすきなクラスでも大丈夫
もちろんぜんぶ配列でもOK
146デフォルトの名無しさん
2022/06/23(木) 10:12:12.29ID:bFbjfjx7 dictのキーにString型のリストとバリューにリストに入った多重結界みたいなデータ作ってjsonとして書き出すみたいな遊びだよね
147デフォルトの名無しさん
2022/06/23(木) 14:55:17.55ID:EV0+4t37 https://github.com/yaneurao/Ayane
のunit_test1.pyの、一番基本的なtest_ayane1を通そうとするとプロンプトにtest_ayane1 : とだけ
でてwrite_workerの734行目のself.proc.stdin.flush()でスレッドが死んでるような?感じなのですが
試して原因を教えてくれる神はいませんか。
ちなみに呼び出すエンジン自体は別のソフトや、cshogiというこれと似たライブラリからの呼び出しでちゃんと
動作していることを確認しています。
のunit_test1.pyの、一番基本的なtest_ayane1を通そうとするとプロンプトにtest_ayane1 : とだけ
でてwrite_workerの734行目のself.proc.stdin.flush()でスレッドが死んでるような?感じなのですが
試して原因を教えてくれる神はいませんか。
ちなみに呼び出すエンジン自体は別のソフトや、cshogiというこれと似たライブラリからの呼び出しでちゃんと
動作していることを確認しています。
148デフォルトの名無しさん
2022/06/23(木) 15:04:04.22ID:Ukh7Grgr 判った
149デフォルトの名無しさん
2022/06/23(木) 15:58:15.03ID:EV0+4t37 >>147
Python 3.7.13で、macOS12.4 Montley上です。
Python 3.7.13で、macOS12.4 Montley上です。
150デフォルトの名無しさん
2022/06/24(金) 11:43:47.67ID:3JV7YPJq 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を使わずに受信するとクライアントが送信したデータだけが残るみたいだけど…
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を使わずに受信するとクライアントが送信したデータだけが残るみたいだけど…
151デフォルトの名無しさん
2022/06/24(金) 12:05:35.52ID:K2we1Lar152名無し募集中。。。
2022/06/24(金) 13:18:15.52ID:d6WBxki6 FOR文の中にtqdm()を入れてみたんんですが
下記みたいなのしか表示されなくプログレスバーが表示されません
70786it [3:35:59, 1.94it/s]
なにが問題なんでしょうか?
下記みたいなのしか表示されなくプログレスバーが表示されません
70786it [3:35:59, 1.94it/s]
なにが問題なんでしょうか?
153デフォルトの名無しさん
2022/06/24(金) 14:31:40.66ID:yJmddVFh 実際のコードを書かないこと
154ぴよ
2022/06/24(金) 14:59:09.01ID:XR8KeGTq ほげほげ
155デフォルトの名無しさん
2022/06/24(金) 19:30:36.14ID:n0/ceoPd156デフォルトの名無しさん
2022/06/24(金) 23:45:09.14ID:/S8ogjuv >>150
VSCode で、バイナリエディタの拡張機能・Hex Editor でも使って、バイナリとして見てみれば?
文字コードなどが不明なので、テキストとして見るには困る
適当に内容を作って、ファイルの拡張子を .zip にしても、
正しいZIPファイルの形式になるはずがないので、ZIPファイルとしては動作しない
各拡張子のファイルには、決められた構成があるため、
それに従っていない場合は、正常に動作しない
VSCode で、バイナリエディタの拡張機能・Hex Editor でも使って、バイナリとして見てみれば?
文字コードなどが不明なので、テキストとして見るには困る
適当に内容を作って、ファイルの拡張子を .zip にしても、
正しいZIPファイルの形式になるはずがないので、ZIPファイルとしては動作しない
各拡張子のファイルには、決められた構成があるため、
それに従っていない場合は、正常に動作しない
157デフォルトの名無しさん
2022/06/25(土) 00:01:18.86ID:eoWHGkrH Phil Katz に聞くべき
158デフォルトの名無しさん
2022/06/25(土) 00:11:42.65ID:z9QRxAiq 降霊術を習得しないと
159デフォルトの名無しさん
2022/06/25(土) 19:47:06.55ID:fwnfW89W 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が真になりさえすれば何もおかしなことはないと思います。
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が真になりさえすれば何もおかしなことはないと思います。
160デフォルトの名無しさん
2022/06/25(土) 19:57:20.22ID:I0eUacPf S = {a,b,c}
TypeError: unhashable type: 'list'
TypeError: unhashable type: 'list'
161デフォルトの名無しさん
2022/06/25(土) 20:23:18.44ID:bZig/WUT こういう馬鹿が辞書のキーにまでリスト入れたいとか言い出すんだろうな
162デフォルトの名無しさん
2022/06/25(土) 20:26:09.88ID:gQjoPRQF163デフォルトの名無しさん
2022/06/25(土) 20:36:01.58ID:9jpr7vFN164デフォルトの名無しさん
2022/06/25(土) 21:18:41.55ID:gQjoPRQF >>163
本質的にはそうじゃない、ユーザークラスは既定でハッシュ化できるが
これは一般的な実装ではid()、即ちインスタンスアドレスに基づくもの
実質的に求められているのはハッシュの不変性であり、それならば通る
しかし同一性を内容で評価するなら意味は成さないのでlistだと未定義
データモデル曰く「クラスがミュータブルなオブジェクトを定義しており、
__eq__() メソッドを実装しているなら、 __hash__() を定義してはなりません。」
本質的にはそうじゃない、ユーザークラスは既定でハッシュ化できるが
これは一般的な実装ではid()、即ちインスタンスアドレスに基づくもの
実質的に求められているのはハッシュの不変性であり、それならば通る
しかし同一性を内容で評価するなら意味は成さないのでlistだと未定義
データモデル曰く「クラスがミュータブルなオブジェクトを定義しており、
__eq__() メソッドを実装しているなら、 __hash__() を定義してはなりません。」
165デフォルトの名無しさん
2022/06/26(日) 01:34:01.17ID:A2gDvo6x やってやれないことはないけど
デメリットを打ち消すだけのメリットを見いだせなかったんでしょGuidoが
単に他の言語のdict/setに合わせただけかも知れんが
ともかく、真実が知りたかったら開発者に聞いてこいよ
デメリットを打ち消すだけのメリットを見いだせなかったんでしょGuidoが
単に他の言語のdict/setに合わせただけかも知れんが
ともかく、真実が知りたかったら開発者に聞いてこいよ
166デフォルトの名無しさん
2022/06/26(日) 07:16:45.51ID:eSuyoUi6167デフォルトの名無しさん
2022/06/26(日) 13:31:03.88ID:DTfGvOZF ねんまつ
168デフォルトの名無しさん
2022/06/27(月) 08:09:04.08ID:Zqv939YP PCでのアプリ操作を自動化したいのですが、pyocrで文字認識して、内容によって判断し、pyautoguiでxy座標指定して、ボタン押すしかないでしょうか?
169デフォルトの名無しさん
2022/06/27(月) 08:14:55.95ID:RN7qnQjk 物によるとしか言いようが無いな
170デフォルトの名無しさん
2022/06/27(月) 08:17:13.06ID:RN7qnQjk PyAutoGui でカバー出来るか出来ないかを判断してみたら?
171デフォルトの名無しさん
2022/06/27(月) 18:27:20.11ID:3qzf3wBJ 以前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
原因わかる方いますか?
% 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
原因わかる方いますか?
172デフォルトの名無しさん
2022/06/27(月) 18:53:43.40ID:0yF6vhsn >>171
sudoのほうは全角スペースが入ってるのが原因
sudoのほうは全角スペースが入ってるのが原因
173デフォルトの名無しさん
2022/06/27(月) 19:05:21.65ID:a8sMrZjJ 172の優しさに感動
174デフォルトの名無しさん
2022/06/27(月) 19:25:49.92ID:cL/RIHXE そのpython入れたのはAppleだから通常起動したOSからは削除できない仕組み
消えたらOS内のスクリプトが動かなくなるよ
よかったねOSが壊れなくて
消えたらOS内のスクリプトが動かなくなるよ
よかったねOSが壊れなくて
175デフォルトの名無しさん
2022/06/27(月) 20:20:17.78ID:3qzf3wBJ >>172
迅速なレスありがとうございます。
もう一度コメント打ちましたが同じ結果でした。全角は入ってないようです。
>>174
MACから元々インストールされているのはphyon2なので
Phyon3とは関係ない、削除しても問題ないと思うのですが..
https://i.imgur.com/PpXh6yu.png
迅速なレスありがとうございます。
もう一度コメント打ちましたが同じ結果でした。全角は入ってないようです。
>>174
MACから元々インストールされているのはphyon2なので
Phyon3とは関係ない、削除しても問題ないと思うのですが..
https://i.imgur.com/PpXh6yu.png
176デフォルトの名無しさん
2022/06/27(月) 20:45:49.02ID:xsOnLI+U177デフォルトの名無しさん
2022/06/27(月) 21:25:48.96ID:cL/RIHXE >>175
python3入ってないmacOSってわりと古いよ?
ここ最近はpython2が逆に入ってない(公式サポート終わってるからね)
もし自前で /usr/bin にインストールしたってんならクラッカー気質あるわw
python3入ってないmacOSってわりと古いよ?
ここ最近はpython2が逆に入ってない(公式サポート終わってるからね)
もし自前で /usr/bin にインストールしたってんならクラッカー気質あるわw
178デフォルトの名無しさん
2022/06/27(月) 21:44:39.26ID:XFwxgXBL179デフォルトの名無しさん
2022/06/27(月) 22:13:08.24ID:3qzf3wBJ >>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
追記 すみません自分の勘違いでこの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
180デフォルトの名無しさん
2022/06/27(月) 22:13:29.06ID:3qzf3wBJ >>178
申し訳ありません。
申し訳ありません。
181デフォルトの名無しさん
2022/06/28(火) 01:52:22.87ID:GjoTbrJZ >>179
自決ですが、xcodeが古かったので新しいバージョンにいれた所無事インストールできました。
自決ですが、xcodeが古かったので新しいバージョンにいれた所無事インストールできました。
182デフォルトの名無しさん
2022/06/28(火) 08:26:42.80ID:UgaAibo1 またしても犠牲者が。
pythonの乱用は精神に作用するのかもしれない
pythonの乱用は精神に作用するのかもしれない
183デフォルトの名無しさん
2022/06/28(火) 12:11:58.39ID:W8L8uteA macのOS環境ごとふっとんで死ねば良いのに
184デフォルトの名無しさん
2022/06/28(火) 12:22:02.22ID:SMUgtqGT 日本人が作った、多言語バージョンマネージャーのanyenv を使えばよい。
同様のツールには、asdf もある
nodenv, pyenv, rbenv,
exenv, goenv, tfenv など
node, python, ruby, elixir, go, terraform など
他には、Docker も多い
同様のツールには、asdf もある
nodenv, pyenv, rbenv,
exenv, goenv, tfenv など
node, python, ruby, elixir, go, terraform など
他には、Docker も多い
185デフォルトの名無しさん
2022/06/28(火) 13:58:17.02ID:5S91HeIj re.subで[]で囲まれた文字列の中を置換するとき、どんな記述をすればよいですか?
re.sub(r'\[.*c.*\], 'x', '[abcabc]abc')
期待する値
[abxabx]abc
re.sub(r'\[.*c.*\], 'x', '[abcabc]abc')
期待する値
[abxabx]abc
186デフォルトの名無しさん
2022/06/28(火) 14:07:39.85ID:N3XtpiKU >>185
re.sub(r'\[[^\]]*\]', lambda m: m[0].replace('c', 'x'), '[abcabc]abc')
re.sub(r'\[[^\]]*\]', lambda m: m[0].replace('c', 'x'), '[abcabc]abc')
187185
2022/06/28(火) 14:31:31.24ID:5S91HeIj >>186
多謝!! そしてごめんなさい。良ければ解説を。
多謝!! そしてごめんなさい。良ければ解説を。
188185
2022/06/28(火) 14:49:53.04ID:5S91HeIj []の中だけを対象にreplaceしているのは、なんとか分かるんですが、re.sub の第2引数、
lambda m: m[0].replace('c', 'x')
が何をしているのかわかりません(泣)
lambda m: m[0].replace('c', 'x')
が何をしているのかわかりません(泣)
189デフォルトの名無しさん
2022/06/28(火) 14:52:51.94ID:dX7Zsa+9190デフォルトの名無しさん
2022/06/28(火) 14:59:09.76ID:d3+RKzUY repl が関数であれば~の下りね、m[g]はm.group(g)と同等
後読みアサーションに固定幅制約がないライブラリなら
面倒なことしなくても(?<=\[.*)c(?=.*\])で済みそうだが
後読みアサーションに固定幅制約がないライブラリなら
面倒なことしなくても(?<=\[.*)c(?=.*\])で済みそうだが
191デフォルトの名無しさん
2022/06/28(火) 15:42:31.79ID:5S91HeIj re.sub(r'\[.*\]', lambda m: m.group(0).replace('c, 'x')
でlambda関数がヒットするたび呼ばれるわけか!!
仕組みは理解できました。
>>190
look-behind requires fixed-width pattern
に阻まれました。
でlambda関数がヒットするたび呼ばれるわけか!!
仕組みは理解できました。
>>190
look-behind requires fixed-width pattern
に阻まれました。
192デフォルトの名無しさん
2022/06/28(火) 19:31:26.15ID:mooH0Iqw m.group はめんどくさい
findall の方が便利
findall の方が便利
193デフォルトの名無しさん
2022/06/29(水) 07:52:27.56ID:9vdu/PbE >192
re.findall だと re.sub のような仕掛けが利用できなくないですか?
>185 できますか??
re.findall だと re.sub のような仕掛けが利用できなくないですか?
>185 できますか??
194デフォルトの名無しさん
2022/06/29(水) 10:56:55.09ID:CtIvUBkO 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]'
ちょっと長くなるけど色々応用がききます
# []の中だけ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]'
195デフォルトの名無しさん
2022/06/29(水) 19:29:51.42ID:CtIvUBkO 完成形できました!記号が含まれていても[]がちゃんと閉じてなくても
ちゃんと閉じているのだけ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]', '']
ちゃんと閉じているのだけ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]', '']
196デフォルトの名無しさん
2022/06/29(水) 22:12:59.69ID:sd1PgpdM 見通し悪すぎて要件満たしててもレビューで蹴られるコード
197デフォルトの名無しさん
2022/06/29(水) 22:25:07.73ID:TQFqK5Fi ちゃんと閉じているの定義があやしい
[[abc]とか
[[abc]とか
198デフォルトの名無しさん
2022/06/29(水) 23:13:54.03ID:CtIvUBkO199デフォルトの名無しさん
2022/06/30(木) 02:06:34.63ID:HSayXmFT kazuyuki
200デフォルトの名無しさん
2022/06/30(木) 20:55:30.42ID:QXLJbWFQ ナンプレのゲーム作りたい
縦横はチェックする方法わかるが
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)
縦横はチェックする方法わかるが
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)
201デフォルトの名無しさん
2022/06/30(木) 21:46:07.32ID:0uxZVqVl 簡単なのは3x3を座標系とは別の9マスの配列の配列として保持
置いたときに縦横とは別にその配列へ反映させる
縦横も同じ手法をとると統一感ある
コード上は9マスの配列はクラスにするかも
置いたときに縦横とは別にその配列へ反映させる
縦横も同じ手法をとると統一感ある
コード上は9マスの配列はクラスにするかも
202デフォルトの名無しさん
2022/06/30(木) 22:01:04.82ID:zKJ67H3+ 5桁8色のhit&blowを造りたい
人間が設問してpythonに解かせたい
人間が設問してpythonに解かせたい
203デフォルトの名無しさん
2022/07/02(土) 07:54:20.82ID:oFwScFTn >>201
既存の座標系にこだわらないほうがいいか
ありがとう
ナンプレのゲーム作りたいから手始めにナンプレを解くプログラムの検証をしてたんだけど
https://techiedelight.com/compiler/?b-I8
37行目の部分ってどうなってるの?
再帰関数なのはわかるんだけど、if文の中で再帰してるじゃん
def 関数():
if 再帰関数():
retrun Ture
retrun Flase
既存の座標系にこだわらないほうがいいか
ありがとう
ナンプレのゲーム作りたいから手始めにナンプレを解くプログラムの検証をしてたんだけど
https://techiedelight.com/compiler/?b-I8
37行目の部分ってどうなってるの?
再帰関数なのはわかるんだけど、if文の中で再帰してるじゃん
def 関数():
if 再帰関数():
retrun Ture
retrun Flase
204デフォルトの名無しさん
2022/07/02(土) 09:00:34.91ID:Zph8lW04 >>203
再帰だけどやってることは探索のための分岐
rangeの列挙からcontinueされなかった分を順番に分岐してて
呼んだ先で18-20にひっかかると中断して最初の呼び出しまで戻ってる
deepcopyしてるところが富豪的だけどシンプル
再帰だけどやってることは探索のための分岐
rangeの列挙からcontinueされなかった分を順番に分岐してて
呼んだ先で18-20にひっかかると中断して最初の呼び出しまで戻ってる
deepcopyしてるところが富豪的だけどシンプル
205デフォルトの名無しさん
2022/07/02(土) 09:39:17.61ID:EefHjxyZ >>204
この37行目
if set_num(ndata, idx + 1): return True
これを
set_num(ndata, idx + 1)
に変えてみたんだけど結果変わらなかった
if の中に入れる意味あるの?
この37行目
if set_num(ndata, idx + 1): return True
これを
set_num(ndata, idx + 1)
に変えてみたんだけど結果変わらなかった
if の中に入れる意味あるの?
206デフォルトの名無しさん
2022/07/02(土) 09:44:12.51ID:EefHjxyZ 答えが出た後も探索しちゃうからそれを止めるための処理ってことか
207デフォルトの名無しさん
2022/07/02(土) 09:57:44.64ID:COZLaCzb ninbe
208デフォルトの名無しさん
2022/07/11(月) 12:19:00.64ID:aiHSnYNz google colabでcuda使いたい。
良い方法ある?
良い方法ある?
209デフォルトの名無しさん
2022/07/11(月) 12:19:00.73ID:aiHSnYNz google colabでcuda使いたい。
良い方法ある?
良い方法ある?
210デフォルトの名無しさん
2022/07/11(月) 12:39:20.78ID:L4tB3bvp 金払ってないのか?
211デフォルトの名無しさん
2022/07/11(月) 14:48:46.26ID:aiHSnYNz212デフォルトの名無しさん
2022/07/11(月) 15:51:00.64ID:EGP2A4JX 好きなテキストエディタないの?それで基本いいんだけど
拘りないなら拡張とユーザ数からvscodeでいいんじゃない
PyCharmはリファクタまわりが優れているけど必須じゃないし
Atomはオワコン
拘りないなら拡張とユーザ数からvscodeでいいんじゃない
PyCharmはリファクタまわりが優れているけど必須じゃないし
Atomはオワコン
213デフォルトの名無しさん
2022/07/11(月) 17:35:44.11ID:rDGcpouH vsもマイクロソフト以外のプラグインが信用出来ないからあまり良いとは言えないかなー
214デフォルトの名無しさん
2022/07/12(火) 00:04:57.18ID:eIaiUALg 文字列〜〜〜ID123456.text
みたいなファイルからID123456だけを抜き出したいんだけど、どんな方法がある?
IDの後には必ず数字がきて、桁数はかならず6
みたいなファイルからID123456だけを抜き出したいんだけど、どんな方法がある?
IDの後には必ず数字がきて、桁数はかならず6
215デフォルトの名無しさん
2022/07/12(火) 00:06:23.62ID:eIaiUALg 補足
IDが書かれてる場所はファイルによって異なる
文字列〜〜〜ID123456文字列〜.text
ID123456文字列〜〜〜.text
みたいなときもある
IDが書かれてる場所はファイルによって異なる
文字列〜〜〜ID123456文字列〜.text
ID123456文字列〜〜〜.text
みたいなときもある
216デフォルトの名無しさん
2022/07/12(火) 02:57:47.18ID:yBYukR5V >>214
普通は正規表現でも使うのかな
俺は正規表現使えないからこう書く
from pathlib import Path
p="C:\abc\あいうID1234567XYZ.text"
print("ID" + Path(p).stem.split("ID")[1][:6])
普通は正規表現でも使うのかな
俺は正規表現使えないからこう書く
from pathlib import Path
p="C:\abc\あいうID1234567XYZ.text"
print("ID" + Path(p).stem.split("ID")[1][:6])
217デフォルトの名無しさん
2022/07/12(火) 08:19:17.52ID:hTnf4I/y >>215 正規表現を制する者は文字列を制する、他の言語でも仕様はほぼ同じ、覚えて損は無し
>>>import re
>>>s='''文字列〜〜〜ID123456文字列〜.text
・・・ID789012文字列〜〜〜.text
・・・みたいなときもある'''
>>>re.findall(r'ID\d{6}', s)
['ID123456', 'ID789012']
>>>import re
>>>s='''文字列〜〜〜ID123456文字列〜.text
・・・ID789012文字列〜〜〜.text
・・・みたいなときもある'''
>>>re.findall(r'ID\d{6}', s)
['ID123456', 'ID789012']
218デフォルトの名無しさん
2022/07/12(火) 10:53:36.86ID:eIaiUALg >>216>>217
ありがとうございます、勉強になります
ありがとうございます、勉強になります
219デフォルトの名無しさん
2022/07/12(火) 20:48:55.38ID:gRW1mfOh 例外処理ってどう使えばいいんだろ
スクレイピングしてあるサイトのデータ拾いに行って
”データ”がある場合に代入となるんだけど
拾いに行くページによって、その行自体がなくてエラーになってしまうんだよな
if Data[0][0] == ”データ”:
s = Data[0][0]
Data[0][0]がそもそも存在しない時にエラーにならないよう例外処理を使うといい、ぐらいまでは調べたんだけど
書き方がよくわからない
スクレイピングしてあるサイトのデータ拾いに行って
”データ”がある場合に代入となるんだけど
拾いに行くページによって、その行自体がなくてエラーになってしまうんだよな
if Data[0][0] == ”データ”:
s = Data[0][0]
Data[0][0]がそもそも存在しない時にエラーにならないよう例外処理を使うといい、ぐらいまでは調べたんだけど
書き方がよくわからない
220デフォルトの名無しさん
2022/07/12(火) 21:11:11.59ID:hTnf4I/y >>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']
より具体的な例として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']
221デフォルトの名無しさん
2022/07/12(火) 21:56:43.39ID:UQgGu1pu >>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)
データがなかった場合にどう処理したいのかによって
例外処理にするのか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)
222デフォルトの名無しさん
2022/07/12(火) 22:40:42.84ID:xLkMA/UK >>219
スクレイピングでたとえると
途中の要素が取得できないと結局な結果が得られないのでその場でプログラム終了する
とすると、取得失敗の都度ifでsys.exit()と書けはする
ここで終了前になにかメッセージ出力したり上位の関数にエラーで戻ったりアレコレしたいとすると
共通化したくなり例外以外では見通しが悪く書きにくい
そういうのもうまく関数設計すれば書けはするけど
Pythonは標準の操作(Data[0][0] とか)で例外あげる場面が多いので例外に寄せる方が楽
スクレイピングでたとえると
途中の要素が取得できないと結局な結果が得られないのでその場でプログラム終了する
とすると、取得失敗の都度ifでsys.exit()と書けはする
ここで終了前になにかメッセージ出力したり上位の関数にエラーで戻ったりアレコレしたいとすると
共通化したくなり例外以外では見通しが悪く書きにくい
そういうのもうまく関数設計すれば書けはするけど
Pythonは標準の操作(Data[0][0] とか)で例外あげる場面が多いので例外に寄せる方が楽
223デフォルトの名無しさん
2022/07/13(水) 20:23:40.86ID:EtP8dxEe Pythonのトップ・キノコードがキノクエストと言う、Pythonの学習サービスを作った!
224デフォルトの名無しさん
2022/07/13(水) 22:27:14.03ID:XjBOe/Qa s = ’aaa bbb ccc ddd’
という文字列を
s = ’[aaa],[bbb],[ccc],[ddd]’
という文字列にする方法って
s.split()
で一度リストにして
for文内で新しいリストにappendとか使って [ や ] や , をリストの要素として追加して
そのリストをまた文字列に戻すって方法しか思いつかないんだけど、他にあるかな?
という文字列を
s = ’[aaa],[bbb],[ccc],[ddd]’
という文字列にする方法って
s.split()
で一度リストにして
for文内で新しいリストにappendとか使って [ や ] や , をリストの要素として追加して
そのリストをまた文字列に戻すって方法しか思いつかないんだけど、他にあるかな?
225デフォルトの名無しさん
2022/07/13(水) 22:38:12.38ID:ZiN6uKeA >>224
s = '[' + s.replace(' ', '],[') + ']'
s = '[' + s.replace(' ', '],[') + ']'
226デフォルトの名無しさん
2022/07/13(水) 22:42:11.00ID:tPrODk9K s='[' + s.replace(' ',']',[') + ']'
これでいけんか?
これでいけんか?
227デフォルトの名無しさん
2022/07/13(水) 22:43:26.48ID:tPrODk9K かぶったし打ち間違いあるしスマホでコード書くの合わないな…
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 立民・岡田氏の質疑「不適切」 維新・藤田氏、台湾有事答弁巡り [蚤の市★]
- 高市早苗って「わざと」日本畳んでるよな? [419865925]
- 【愛国者悲報】上海で日本料理店を営む経営者、咽び泣く「どうか...どうか中国と仲良くして欲しいです...お願いします...」 [856698234]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- なんJ民「ガンダムSEEDみたいなエロ画像ってええよな」
- 煮~詰めるキャッツアイ♪
