Pythonのお勉強 Part66

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9f02-4fXk)
垢版 |
2021/11/15(月) 18:59:43.37ID:f2uNQEAt0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/

〇前スレ〇 Pythonのお勉強 Part65
https://mevius.5ch.net/test/read.cgi/tech/1621749112/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ###
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/02/01(火) 10:01:24.43ID:VIAeEFNz0
読み違えてなければ
なんでテキスト差分にこだわってんのか分からん
2022/02/01(火) 10:04:13.76ID:at58GuQOH
>>77 結構な数の旧のJSONがあり、それを特定のルールでアップデートして新にします。
で正しくアップデートされたかを検証するために新旧を比較します。

>>78 内容が違う場合に人間が理解しやすい形で見たいという。

>>79 スペースや改行もそうですが、例えば辞書の要素をどういう順序で書き出すかは
シリアライザ次第 or 手書きをした人次第ですよね... あ、jqで正規化できるのかな?
jqを知りませんでしたので見てみますです。
ただしいて言うと正規化というのも... 実際には例えば位置情報を含む要素があったり
して、その場合位置順で要素が並んでいると本当は嬉しい、とかもあったり。

>>80 なるほど、ググるといろいろヒットしますね。検討してみます。
2022/02/01(火) 10:15:12.61ID:hvUdGcmR0
要は手書きは手書きの良さがあると言うか(意味不明
2022/02/01(火) 10:18:51.13ID:snO12m+pa
配列以外で順序に意味もたせたらあかんやろ
85デフォルトの名無しさん (ワッチョイ 6d36-T4N9)
垢版 |
2022/02/01(火) 10:21:13.84ID:BTrEast20
>>82
jsonの機能にフォーマットして出力ってのがあるよ。
新旧をファイルなり端末なりに出力して比較したら。
2022/02/01(火) 10:39:12.47ID:jpDLaV3CM
>>84
順序維持したまま辞書化したいニーズは多々あるし、そういうクラスも用意されてる。
確認してないから想像だけどjsonパーサも子要素の順序維持するんじゃないかな
2022/02/01(火) 10:48:36.31ID:snO12m+pa
>>86
いやそういう辞書があってもいいけど、jsonで期待しちゃだめでは?
2022/02/01(火) 10:50:59.31ID:6/JwMCIKM
>>84
差分を取りたいという話なのは理解してる?
2022/02/01(火) 10:59:29.24ID:VIAeEFNz0
・テキスト差分を人が見やすいようにしたい

・旧から新へ書き換えたい&検証したい
は別々に対応したほうがいいと思う
2022/02/01(火) 11:03:47.87ID:snO12m+pa
>>88
だから80でsetで比較しろと言うとる
91デフォルトの名無しさん (ワッチョイ 3933-tIr1)
垢版 |
2022/02/01(火) 11:05:33.91ID:R8oq8dq80
なんでjsonのままザブングル取ろうとしてるの
読み込んでから比較できるようにしたらだめなの
92デフォルトの名無しさん (ワッチョイ 3933-tIr1)
垢版 |
2022/02/01(火) 11:06:57.50ID:R8oq8dq80
ていうか、そのファイルはjsonのようなファイルなの?
それともjsonなの?
2022/02/01(火) 11:07:35.70ID:cb/LIcKT0
バールのようなファイル
2022/02/01(火) 11:09:46.48ID:jpDLaV3CM
>>87
jsonは人可読であることも利点だから、読みやすく並べたかもしれない順序を維持するのも大事だと思うよ
2022/02/01(火) 11:12:59.06ID:snO12m+pa
>>94
じゃあ文字列比較のためにソートするのも禁止じゃねえか
2022/02/01(火) 11:19:24.60ID:VIAeEFNz0
47には固有のルールがあるようだしそれに沿ったソートを書けばいいだけ
2022/02/01(火) 11:28:32.69ID:mtN06K+LM
>>90
> まあ再帰的に歩きながら要素をsetとして比較するとか
具体的にどうやるの?
jq -S でキーをソートして差分取るより簡単なの?
2022/02/01(火) 11:41:19.17ID:snO12m+pa
>>97
手間はあるよ
で、80で親切にjsondiffも挙げてやっとるやん
まあなんでもいいけど、なんかソート禁止という条件が導入されたからソートしない方がいいよ
2022/02/01(火) 11:50:19.81ID:7JwpJFltM
>>98
set 関係ないやん…
引っ込みつかなくなってて笑える
2022/02/01(火) 12:03:06.99ID:snO12m+pa
>>99
集合がわからんということですか?
それはまあ中学校で勉強してもらうしかないんですけど、なかなか便利ですよ
2022/02/01(火) 12:09:18.37ID:7JwpJFltM
>>97
日本語がわからんということですか?
それはま小学校で勉強してもらうしかないんですけど、なかなか便利ですよw

> 具体的にどうやるの?
> 具体的にどうやるの?
> 具体的にどうやるの?
2022/02/01(火) 12:29:21.07ID:snO12m+pa
大丈夫か?
2022/02/01(火) 13:11:25.40ID:g2E7LE8j0
>>98
set使ったら順序保証されないじゃん?
jsonの同一性をどう定義するかだけど、jsonオブジェクトが同一でいいなら自分なら二つ読んでdumpsして文字列比較だな。
わざわざ木構造を探索して確認はしないわー。車輪の再発明だもの。
2022/02/01(火) 13:14:14.12ID:HjKbLPGF0
つまらない意地の張り合いは止めて欲しい
2022/02/01(火) 13:24:00.14ID:7JwpJFltM
>>102
顔真っ赤なお前が大丈夫じゃないだろw
2022/02/01(火) 13:25:06.37ID:7JwpJFltM
>>103
差分リストとか見たことないの?
どこを変更 した/された んだっけ? って言うのを見たいんだと思うよ
2022/02/01(火) 13:25:39.60ID:snO12m+pa
>>103
もちろんされないよ
jsonの話と順序があるjsonの話とjsonの様再帰構造を持つナニカの話が出てきてるわけよ
2022/02/01(火) 14:23:16.43ID:VIAeEFNz0
質問あるあるだけど後だし要件多くてつまらん
2022/02/01(火) 14:40:07.76ID:cb/LIcKT0
最初から直接いじるって言ってるけどな
2022/02/01(火) 14:53:12.59ID:BDMLLBwS0
json.load(〜, object_pairs_hook = collections.OrderedDict)で読めばキー順維持できるし
json.dump(〜, indent=4, ensure_ascii=False)あたりで出力すれば人も読みやすいけど
縛りプレイしたいみたいだから違うんだろうね
2022/02/01(火) 14:58:51.99ID:VIAeEFNz0
質問者がほんとうに欲しかったものは全然違うんだろうなぁw
2022/02/01(火) 14:59:28.13ID:cb/LIcKT0
あるべき姿ではないけど、差分で作ってるからなるべく変えずにやるしかない
というのは業務では往々にしてある

そっち方向に特化して、なるべく差分を少なく変更するツールを作ったりする
2022/02/01(火) 17:16:00.77ID:Cj8PsmmI0
OrderedDictはいまは必要なくなったらしいが
古い環境のことを考えて一応入れておくかな
2022/02/01(火) 18:22:53.99ID:+p3toWRQ0
金曜日までまて!
115デフォルトの名無しさん (オッペケ Srbd-1iGg)
垢版 |
2022/02/01(火) 18:29:53.63ID:NciR+oItr
Python3.7以降辞書は順番を保持する事が仕様で規定されたが、一般的に辞書はそう言ったものではないから明確に順番を保持する意図があるならOrderedDict使うべき
2022/02/01(火) 18:37:17.14ID:cb/LIcKT0
セキュリティの為に意図的にランダムにしとるよ
117デフォルトの名無しさん (ワッチョイ 6d36-T4N9)
垢版 |
2022/02/01(火) 18:40:59.45ID:BTrEast20
>>110
linux使ってれば、ファイルに落とした後 diff か sdiff で一発でわかるんだけど。
windowsってファイル比較ソフトとか使うの?
2022/02/01(火) 18:57:53.68ID:YIpBnXPz0
wslがあります
2022/02/01(火) 21:48:27.03ID:b8/MsqKZM
変更だからgit diffとかでしょ
CLIで確認するならgirattributeでjsonはフォーマッタ経由させとく
2022/02/02(水) 03:09:29.57ID:gdOUqCG30
>>106
毎日嫌というほど見とるがなw
2022/02/02(水) 11:29:50.32ID:0scplIwD0
どうも>>47です。色々なアドバイスありがとうございます! レス一つ一つの引用は割愛
させていただきますが、アドバイスを元に試してみます。

あ、JSONのようなと書きましたがJSONです。
辞書の可読性というのは、例えばほぼ碁盤目状に並んだ住宅配置みたいのがあって、
{ "山田邸": {x=,y=, ...}, "鈴木邸": {x=,y=, ...}, ...} みたいのが配置の順序で(キーボード配列
で言ったら q,w,e,r,...., a,s,d,f, .... 等)並んでいる状態のことです。
元の可読性を維持するには〇〇邸でソートして欲しくなく、やるならyでソートして次にxで
ソートするみたいな... しかしふと、この場合はそもそも配列のほうがよかったのかも。
まあとにかく、キー順縛りでいけるのかな?

あと、差分を表示するのも標準的なdiff、差分付近の表示でなく、例えばLinux上ならmeldの
ようなものを使いたく... と思ったら json-diff には -f (full) というオプションが。
2022/02/02(水) 12:12:55.55ID:R8Mm1Nfi0
winny開発して
2022/02/02(水) 12:22:30.14ID:8JcfLiOmd
テキスト比較ならwinmerge
2022/02/02(水) 12:23:40.23ID:qgs+N5K10
それです
2022/02/02(水) 12:35:09.17ID:R8Mm1Nfi0
araxis mergeがいいよ
2022/02/02(水) 12:37:34.48ID:750HFVx7M
>>121
dictionaryをJSONにシリアライズする前に(y,x)bナkey指定してsortすればいい
配列にしたほうがいいかどうかはアプリケーションの使い方次第
2022/02/02(水) 12:53:10.62ID:PDm/NhWY0
JSONだっていってんだから元の構造からArrayにしないとダメ
その周辺だけいまは大丈夫だったとしても
なにか加わったら破綻する可能性抱えることになる
2022/02/02(水) 13:08:50.57ID:R8Mm1Nfi0
jsonの可読性なんか気にせずに、整形して見る仕組みを作った方がいい

差分をjsonのテキスト比較でやりたいならば、
専用のシリアライザを作るか、標準のシリアライザに統一して、
手書きからシリアライザへのジャンプの1回だけ頑張って差分が無いことを示す
2022/02/02(水) 13:23:14.33ID:atXKuk6GM
設定ファイル的なものの書き換えツールを作ろうとしてるんでしょ?
そのツール上は整形して見れたとしてもツールを使って更新した結果が問題ないかどうかをテキストの差分比較したいケースがあるのは普通のこと
130デフォルトの名無しさん (ワッチョイ 7933-tIr1)
垢版 |
2022/02/02(水) 15:05:32.48ID:ig8XBRXZ0
だから、jsonからPythonオブジェクトとして読み込んで好きなようにソートして、比較すりゃいいだろ
そうしないっていうならもうPython関係ないんだよ
頑なにjsonのまま比較しようとするなら、どっかよそで聞いて来いよ
2022/02/02(水) 15:24:45.92ID:GpllQ/ot0
そんなキレんなよw
2022/02/02(水) 17:07:28.13ID:xX3ktvVZM
読み込んで、ordereddictに入れるときにソートして、キー比較して値比較してってのが簡単かな、再シリアライズしなくていいなら
10行ぐらい書けばいけそう
2022/02/02(水) 17:34:38.06ID:FmeGoeQ70
差分確認ならこれ参考にしろ
https://qiita.com/set0gut1/items/be9247910eb7c155d592
2022/02/07(月) 15:18:40.32ID:HhuH8Ieg0
a = [1, 2, 3, 4, 5, 6]

(a.remove(i) for i in (4, 6))
print(a) # [1, 2, 3, 4, 5, 6]

[a.remove(i) for i in (4, 6)]
print(a) # [1, 2, 3, 5]

なんでこうなるの?
2022/02/07(月) 15:26:19.64ID:jzNjAoA60
(a.remove(i) for i in (4, 6))
は何を返す?それを理解してないだけ
2022/02/07(月) 15:33:14.88ID:HhuH8Ieg0
>>135
ありがとうございました
2022/02/07(月) 15:37:25.18ID:HhuH8Ieg0
もう一つお願いします
a = [1, 2, 3, 4, 5, 6]
for i in a: a.remove(i)
print(a) # [2, 4, 6]

aは[]になると思ったのですが‥]
2022/02/07(月) 15:43:57.98ID:HhuH8Ieg0
>>135
すいません
やっぱりわかりません
a.remove(i)しているのでaの内容が書き代わってると思うのですが‥
なにか根本的に理解が足りないのでしょうか
2022/02/07(月) 16:00:04.42ID:91CWjkaMa
まだ実行してねえんじゃ?
2022/02/07(月) 16:01:55.06ID:91CWjkaMa
タプルじゃないもんね
2022/02/07(月) 16:02:55.00ID:8jdPUSw20
>>137
https://dev.classmethod.jp/articles/python-delete-element-of-list/
2022/02/07(月) 16:04:05.95ID:jzNjAoA60
(a.remove(i) for i in (4, 6))
はジェネレータ式
https://docs.python.org/ja/3/reference/expressions.html#generator-expressions

ざっくり言うと関数を作ってるだけで中身のa.remove(i) for i in (4, 6)は実行されてない(おまけに作った式も変数に保存してない)
なので1つ目のprint(a)は何も変更されてないaを表示してるだけ
gen = (a.remove(i) for i in (4, 6))
b = list(gen)
print(b)
を実行してみよう
2022/02/07(月) 16:19:43.96ID:Afq51Jp90
>>137
>>> a = [1, 2, 3, 4, 5, 6]
>>> for i in a: print(i); a.remove(i)
...
1
3
5
>>> a = [1, 2, 3, 4, 5, 6]
>>> for i in a.copy(): print(i); a.remove(i)
...
>>> a
[]
歯抜けになるのはPythonのarrayの実装がそうだからだけど
挙動が予測しにくいから一般的に同時に使う作法が誤り
2022/02/07(月) 16:21:15.83ID:Afq51Jp90
141 にもう書いてたしにそう
2022/02/07(月) 16:40:04.66ID:HhuH8Ieg0
>>139
>>142
ありがとうございます!
角括弧の代わりに丸括弧を使うとジェネレーター式になるとは
今までタプルになると思ってました

>>141
>>143
仕様だったんですね
2022/02/07(月) 19:59:17.54ID:ZoZ1XgI6a
すごい、Pythonってこんなことできるんだ
147デフォルトの名無しさん (ワッチョイ ff10-XN8f)
垢版 |
2022/02/07(月) 20:25:55.13ID:WJa2Jvem0
removeすると番号がズレるから後ろからremoveするのがセオリー
2022/02/07(月) 20:46:50.85ID:0jla5CHw0
そんなバグの元は使わない
149デフォルトの名無しさん (ワッチョイ f72c-6/W1)
垢版 |
2022/02/08(火) 05:23:38.31ID:nYjjFW0t0
ループremove再代入とかバカの極み
150デフォルトの名無しさん (ワッチョイ b75f-zD41)
垢版 |
2022/02/08(火) 12:51:03.44ID:HdA5CgPa0
おう、これ全然消えねーんだけど何とかしろやゴルァァァアアアアアア

/bin/sh: -c: 行 0: 予期しないトークン `(' 周辺に構文エラーがあります

ねえっての、キチガイ
2022/02/08(火) 13:22:18.64ID:WarIH046M
ようキチガイ
shebangがないかBOMついてるか\rが入ってるかのどれかだろ
2022/02/08(火) 13:46:58.20ID:jSMs3LfK0
構うな
153デフォルトの名無しさん (ワッチョイ b75f-zD41)
垢版 |
2022/02/08(火) 17:58:46.74ID:HdA5CgPa0
レベルが低いなココw
他で聞いたら一発で通った(⌒▽⌒)アハハ!
2022/02/08(火) 20:58:08.23ID:NLc/sB5qa
5chにたむろしてる輩はなぁ
155デフォルトの名無しさん (ワッチョイ 1763-AiWJ)
垢版 |
2022/02/09(水) 23:11:13.01ID:4OQbC8Dn0
windowsのデスクトップアプリを作ろうとしていて、pythonのライブラリを使いたいけど、
KivyとかTkinterとかだとGUIがwindows風とは結構印象が違う。
画面デザインもやりにくそう。

こういう時、どうしますか?
2022/02/09(水) 23:15:15.23ID:BADAjEq60
フラッターを使ってみる
2022/02/09(水) 23:16:20.37ID:7gH1eikT0
PyQt
2022/02/09(水) 23:27:02.98ID:rq+afW6M0
JavaとかもそれっぽいUIになるし
全てのUIが同じであるべき、という思想はむしろ危険
2022/02/09(水) 23:44:09.06ID:7gH1eikT0
根拠や理屈を述べようかw
2022/02/10(木) 00:26:40.43ID:nXbautJ20
見た目なんか気にしなきゃ良いのよ
2022/02/10(木) 00:29:45.14ID:iAe5Imd/0
浅いなw
162デフォルトの名無しさん (ワッチョイ 9fae-8TV6)
垢版 |
2022/02/10(木) 14:26:19.15ID:u9gdDWsi0
Pythonでautohotkeyみたいな事できますか
2022/02/10(木) 14:31:20.82ID:xRgtfTzz0
ahkいろいろできて面白いけど言語仕様が腐り切ってるからな
どうせ書くならちゃんとしたものにしたいのは判る
2022/02/10(木) 15:31:21.44ID:9h95sgkl0
https://hotkeyit.github.io/v2/
ググっただけでうごくかはわからん
2022/02/10(木) 16:44:31.96ID:hwuAb01X0
keyhacじゃいかんのか?
2022/02/10(木) 18:50:29.98ID:f1tH8Y8aM
Qt周り敷居高くて手を出せない...
2022/02/10(木) 19:09:03.43ID:xRgtfTzz0
keyhac使いこなしてる?
2022/02/10(木) 19:40:36.74ID:Bfsj9FyQ0
自分もAutoHotKeyで色々作ってたけどPython伸べんきょのためにちょっとずつ移行していこうと思ってる
2022/02/10(木) 19:46:58.86ID:hwuAb01X0
どの程度を使いこなすというのかわからんが
自分のやりたいことは特に不満もなくできてるかな
2022/02/10(木) 20:52:26.42ID:zy0nUNzD0
pythonのfor文めんどうくせえと思ってたけど使い始めたら便利だった
171デフォルトの名無しさん (ワッチョイ 1763-AiWJ)
垢版 |
2022/02/10(木) 22:29:52.99ID:pn1FthPf0
>>155です。
昨日はありがとうございました。毎日長時間残業なので遅レスですみません。

>>156 >>157
フラッター、PyQtですね。週末試してみますね。ありがとうございます。
あとは、C#からpythonを呼び出すのはありですよね。
フラッター、PyQtの見た目、デザインのしやすさは未知数ですが、
C#の方が画面デザインは慣れていてるので、そっちも一つの方法かなと思っています。
ただ、マイナーなやり方をして、ハマった時の対処が面倒なので一朝一夕ですね。
172デフォルトの名無しさん (ワッチョイ 1763-AiWJ)
垢版 |
2022/02/10(木) 22:31:03.85ID:pn1FthPf0
×一朝一夕
○一長一短

残業で疲れていて、頭が回っていません・・・汗
2022/02/10(木) 22:49:24.09ID:6jtK/Myh0
死ぬなよ
174デフォルトの名無しさん (ブーイモ MMcf-l5Gy)
垢版 |
2022/02/11(金) 16:59:47.44ID:bxnKydDQM
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮民族はゲリ便をじゅるじゅると
うまそうに食うw
175デフォルトの名無しさん (ワッチョイ 3302-piVT)
垢版 |
2022/02/12(土) 03:21:44.21ID:7pTDLltz0
PythonでWebサイトの自動操作をするプログラム作る仕事をもらったんだけど料金いくらが適正なのかわからん
ざっと見積もった感じ200ステップくらい
2022/02/12(土) 04:06:32.74ID:DcUREbCJ0
>>175
何を使う?
177デフォルトの名無しさん (ワッチョイ 3302-piVT)
垢版 |
2022/02/12(土) 13:37:13.71ID:7pTDLltz0
>>176
seleniumを使うよ
200ステップもなかったわ
120ステップくらいでできそう
2022/02/12(土) 14:22:35.18ID:8PhKwT/VM
ステップ数で見積もるのに驚いた
スクレイピング系はサイトの分析、仕様化、テストで8割以上なので
その部分の価値を考えて自分で値付けしないといけない
179デフォルトの名無しさん (ワッチョイ 3302-piVT)
垢版 |
2022/02/12(土) 14:32:15.98ID:7pTDLltz0
>>178
ステップ数だけで金額見積もる訳ではないよw
ステップ数も判断材料ではあるけど、とりあえずコードの規模感を伝えたかったから

これまで組み込み系ばっかりやってきたからWebサイドの相場がわからんのよね
2022/02/12(土) 14:35:55.15ID:9D2blOG10
掛かる時間×時間単価×自己のスキル
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況