当スレに★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
447デフォルトの名無しさん
2022/07/22(金) 11:32:26.12ID:emgmw9dd >>421-422
runas
runas
448デフォルトの名無しさん
2022/07/22(金) 14:53:38.79ID:hAgOKfi8 >>444
数値を非表示にするオプションつけ忘れた
数値を非表示にするオプションつけ忘れた
449デフォルトの名無しさん
2022/07/22(金) 17:03:59.46ID:t+dBeaSp450デフォルトの名無しさん
2022/07/22(金) 17:47:22.62ID:iaUAG8EO ここはきみの日記帳じゃない
451デフォルトの名無しさん
2022/07/22(金) 19:07:18.92ID:t+dBeaSp >>450
関数や変数の命名はとても重要だよ? 端的で分かりやすくする必要がある
それが可読性やメンテナンス性をあげるわけなのだよ
プログラミングは名前付けであると言われる所以はそういうことなのだよ
今回の数値の非表示オプション名は非常に難しい、私的にはdisplay_valueがベストかな?
と考えつつも彼の意見も参考にしたいわけだ、もちろんtqdmではどうしているのかな?
と調べたりもした、tqdmではbar_formatで書式を指定できるみたいだね
その中で数値部分はpercentageという変数名のようだ
print_barはunit指定ができるわけで%表示固定ではないから、percentageは適切ではない
と考えると・・ね?難しいでしょ? 皆の意見も聞きたいじゃん!
関数や変数の命名はとても重要だよ? 端的で分かりやすくする必要がある
それが可読性やメンテナンス性をあげるわけなのだよ
プログラミングは名前付けであると言われる所以はそういうことなのだよ
今回の数値の非表示オプション名は非常に難しい、私的にはdisplay_valueがベストかな?
と考えつつも彼の意見も参考にしたいわけだ、もちろんtqdmではどうしているのかな?
と調べたりもした、tqdmではbar_formatで書式を指定できるみたいだね
その中で数値部分はpercentageという変数名のようだ
print_barはunit指定ができるわけで%表示固定ではないから、percentageは適切ではない
と考えると・・ね?難しいでしょ? 皆の意見も聞きたいじゃん!
452デフォルトの名無しさん
2022/07/22(金) 19:43:18.38ID:bpOnuI9e 名前は重要。
開発が終わった後でも、コードを見る事があるから
プログラミングの3割の時間は、分かりやすい名前を考えること
簡潔に説明されている名前なら、
処理を詳しく見なくても理解が進むので、バグも減って高品質になる
リファクタリング・メソッド化などは、Rubyist の基本
開発が終わった後でも、コードを見る事があるから
プログラミングの3割の時間は、分かりやすい名前を考えること
簡潔に説明されている名前なら、
処理を詳しく見なくても理解が進むので、バグも減って高品質になる
リファクタリング・メソッド化などは、Rubyist の基本
453デフォルトの名無しさん
2022/07/22(金) 19:52:25.71ID:PdYjn4LX メソッドが長すぎると名付けが難しいから結局は短く作るのがいいのか?
でもそれだと分割しすぎとか言われそうだし
「汎用的、抽象的」な名前がいいのか「汎用的な名前を避けて具体的」にすべきなのか
でもそれだと分割しすぎとか言われそうだし
「汎用的、抽象的」な名前がいいのか「汎用的な名前を避けて具体的」にすべきなのか
454デフォルトの名無しさん
2022/07/22(金) 19:52:35.56ID:t+dBeaSp >>448
でけた! tqdmのbar_formatを採用
これで数値の表示/非表示はもちろん色々柔軟に対応できる
def print_bar(n, max=100, expansion=1, *, bar_format="{prefix}{num}{sep}{bar}{sep}{suffix}",
____________ unit="%", sep="|", prefix="", suffix="", cr=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = box[0] * (rate//8) + box[rate%8] * bool(rate%8)
____bar = f"{bar:{math.ceil(expansion*100/8)}s}"
____num = f"{n:{len(str(max))}d}{unit}"
____print(bar_format.format(**locals()) + "\n"*cr, end="")
でけた! tqdmのbar_formatを採用
これで数値の表示/非表示はもちろん色々柔軟に対応できる
def print_bar(n, max=100, expansion=1, *, bar_format="{prefix}{num}{sep}{bar}{sep}{suffix}",
____________ unit="%", sep="|", prefix="", suffix="", cr=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (n * expansion * 100) // max
____bar = box[0] * (rate//8) + box[rate%8] * bool(rate%8)
____bar = f"{bar:{math.ceil(expansion*100/8)}s}"
____num = f"{n:{len(str(max))}d}{unit}"
____print(bar_format.format(**locals()) + "\n"*cr, end="")
455452
2022/07/22(金) 21:05:54.53ID:bpOnuI9e 例えば、Ruby のモジュール関数の名前なら、
cancel_button_label_text
apply_or_cancel_button
インスタンスメソッド名なら、
obj.suspended?
末尾の? で、戻り値がbool 型だと表現できる
cancel_button_label_text
apply_or_cancel_button
インスタンスメソッド名なら、
obj.suspended?
末尾の? で、戻り値がbool 型だと表現できる
456デフォルトの名無しさん
2022/07/22(金) 21:06:08.18ID:aVBkeTN2 >454
print_bar.update ってできない?
print_bar.update ってできない?
457デフォルトの名無しさん
2022/07/22(金) 21:29:43.19ID:t+dBeaSp >>456
tqdmのupdateみたいなことができるかってこと? クラス化すればできるよ
ああ、bar_formatとか呼び出すごとに変数指定するのはアホだよね
クラス化してインスタンス生成時にbar_format指定した方がいいよね
tqdmのupdateみたいなことができるかってこと? クラス化すればできるよ
ああ、bar_formatとか呼び出すごとに変数指定するのはアホだよね
クラス化してインスタンス生成時にbar_format指定した方がいいよね
458デフォルトの名無しさん
2022/07/22(金) 22:27:04.77ID:t+dBeaSp クラス化できたけど、関数バージョン(>>444)の方が好きかも
class print_bar:
____def __init__(self, max=100, num_format="{num:{max_digit}d}{unit}",
____________ bar_format="{prefix}{num_format}{sep}{bar}{sep}{suffix}",
____________ unit="%", sep="|", prefix="", suffix="", cr=1):
________self.box = "█ ▏▎▍▌▋▊▉"
________self.max = max
________self.max_digit = len(str(max))
________self.num_format = num_format
________self.bar_format = bar_format
________self.unit = unit
________self.sep = sep
________self.prefix = prefix
________self.suffix = suffix
____def update(self, num, expansion=1, cr=1):
________rate = (num * expansion * 100) // self.max
________num_format = self.num_format.format(num=num, **self.__dict__)
________bar = f"{self.box[0] * (rate//8) + self.box[rate%8] * bool(rate%8):{math.ceil(expansion*100/8)}s}"
________print(self.bar_format.format(bar=bar, **dict(self.__dict__, num_format=num_format)) + "\n"*cr, end="")
p = print_bar()
p.update(70)
class print_bar:
____def __init__(self, max=100, num_format="{num:{max_digit}d}{unit}",
____________ bar_format="{prefix}{num_format}{sep}{bar}{sep}{suffix}",
____________ unit="%", sep="|", prefix="", suffix="", cr=1):
________self.box = "█ ▏▎▍▌▋▊▉"
________self.max = max
________self.max_digit = len(str(max))
________self.num_format = num_format
________self.bar_format = bar_format
________self.unit = unit
________self.sep = sep
________self.prefix = prefix
________self.suffix = suffix
____def update(self, num, expansion=1, cr=1):
________rate = (num * expansion * 100) // self.max
________num_format = self.num_format.format(num=num, **self.__dict__)
________bar = f"{self.box[0] * (rate//8) + self.box[rate%8] * bool(rate%8):{math.ceil(expansion*100/8)}s}"
________print(self.bar_format.format(bar=bar, **dict(self.__dict__, num_format=num_format)) + "\n"*cr, end="")
p = print_bar()
p.update(70)
459デフォルトの名無しさん
2022/07/22(金) 22:57:55.57ID:oFTCo3Qt 日記帳で試行錯誤して、結論が出てから書き込んでください
460デフォルトの名無しさん
2022/07/22(金) 23:49:56.07ID:XYg2RZCf boxサーバーに上がっているExcelやcsvのデータってpythonで読み取ることできるのでしょうか?
https://app.box.com/file/xxxxxxxxxxxxxのようなURLを指定して
ファイル内のデータを読み込みたいのですがうまくいきませんでした。
https://app.box.com/file/xxxxxxxxxxxxxのようなURLを指定して
ファイル内のデータを読み込みたいのですがうまくいきませんでした。
461デフォルトの名無しさん
2022/07/23(土) 06:43:50.22ID:NAv7kQq5 beautifulsoupでいったんダウンロードすれば?
462デフォルトの名無しさん
2022/07/23(土) 06:53:36.23ID:DC0ZGSft ども、print_barの作者です。こんな短いプログラムに作者もくそもないですが・・・
上記コードを参考させてもらい考えました。私ならこうします
import math
def print_bar(num, max=100, expansion=1, *, prefix="", display_num=True, unit="", sep="|", suffix="", cr=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (num * expansion * 100) // max
____bar = f"{box[0] * (rate // 8 ) + box[rate % 8] * bool(rate % 8):{math.ceil(expansion * 100 / 8)}s}"
____num_formated = f"{num:{len(str(max))}d}" * display_num
____print(f"{prefix}{num_formated}{unit} {sep}{bar}{sep}{suffix}" + "\n"*cr, end="")
display_valueのほうがわかりやすいけど長いから好きじゃない。何度も書く名前ならdisp_numに短縮するかも。
bar_formatは付けたい人が自分でつければいい
最低限の機能が付いていて、可読性・カスタマイズの容易性を考えるとこんなところでしょうか
上記コードを参考させてもらい考えました。私ならこうします
import math
def print_bar(num, max=100, expansion=1, *, prefix="", display_num=True, unit="", sep="|", suffix="", cr=1):
____box = "█ ▏▎▍▌▋▊▉"
____rate = (num * expansion * 100) // max
____bar = f"{box[0] * (rate // 8 ) + box[rate % 8] * bool(rate % 8):{math.ceil(expansion * 100 / 8)}s}"
____num_formated = f"{num:{len(str(max))}d}" * display_num
____print(f"{prefix}{num_formated}{unit} {sep}{bar}{sep}{suffix}" + "\n"*cr, end="")
display_valueのほうがわかりやすいけど長いから好きじゃない。何度も書く名前ならdisp_numに短縮するかも。
bar_formatは付けたい人が自分でつければいい
最低限の機能が付いていて、可読性・カスタマイズの容易性を考えるとこんなところでしょうか
463デフォルトの名無しさん
2022/07/23(土) 07:10:57.00ID:DC0ZGSft >>462
formattedです。恥ずかしいミス
formattedです。恥ずかしいミス
464デフォルトの名無しさん
2022/07/23(土) 07:22:10.22ID:ytdxYh/D なんか昨日のアップデートでWindows TerminalがIME勝手にON(英字入力)になる。とっても面倒くさい。
OFFにする方法ない?
OFFにする方法ない?
465デフォルトの名無しさん
2022/07/23(土) 09:23:17.53ID:bR39w9BX466デフォルトの名無しさん
2022/07/23(土) 09:48:06.05ID:lkZCuVJ2467デフォルトの名無しさん
2022/07/23(土) 10:20:26.06ID:zqWGCIwO コード出してあれこれやるのはいいと思うけどここまで引っ張るのはさすがにスレチだわな
こっちへ行けよ
Pythonのお勉強 Part67
https://mevius.5ch.net/test/read.cgi/tech/1653540315/
こっちへ行けよ
Pythonのお勉強 Part67
https://mevius.5ch.net/test/read.cgi/tech/1653540315/
468デフォルトの名無しさん
2022/07/23(土) 10:32:50.67ID:lkZCuVJ2 >>467
引っ張るとスレチって意味が分からんw そっちのスレも同じじゃん何が違うのよ?
うーん、、もしかして自分が質問したレスが埋もれちゃったとか?
それは関係ないよ、単に答えられるor答える人が居なかっただけで我々のせいではない
引っ張るとスレチって意味が分からんw そっちのスレも同じじゃん何が違うのよ?
うーん、、もしかして自分が質問したレスが埋もれちゃったとか?
それは関係ないよ、単に答えられるor答える人が居なかっただけで我々のせいではない
469デフォルトの名無しさん
2022/07/23(土) 10:41:14.21ID:iHVC6bwv 我々…
470デフォルトの名無しさん
2022/07/23(土) 10:43:44.38ID:bR39w9BX 自演で自分のレス褒めてるレスとか観ると
他人事乍ら哀しくなるな
他人事乍ら哀しくなるな
471デフォルトの名無しさん
2022/07/23(土) 10:59:03.42ID:zqWGCIwO472デフォルトの名無しさん
2022/07/23(土) 11:09:30.68ID:QCnlUATD スレタイに日記帳って書いてあるスレで試行錯誤すべきだったよな
473デフォルトの名無しさん
2022/07/23(土) 11:18:41.28ID:lkZCuVJ2474デフォルトの名無しさん
2022/07/23(土) 11:21:00.46ID:Q9mI3iQv しつこい
475デフォルトの名無しさん
2022/07/23(土) 11:29:25.91ID:zqWGCIwO476デフォルトの名無しさん
2022/07/23(土) 11:31:58.41ID:lkZCuVJ2477デフォルトの名無しさん
2022/07/23(土) 11:38:20.58ID:3Ek+JvxJ 3回までよくて4回目がだめなんてことはない
3回でだめな人もいるし、4回はアウトだろうという人もいる
だが10回までくるとさすがに全員がアウトと感じる
そういう状況
3回でだめな人もいるし、4回はアウトだろうという人もいる
だが10回までくるとさすがに全員がアウトと感じる
そういう状況
478デフォルトの名無しさん
2022/07/23(土) 11:49:34.23ID:lkZCuVJ2 >>477
うん?10回は全然良いよ、っていうかスレに沿っているなら何回でもええがな
全員がアウトと感じるとかウソつくなよw 君たちのお気持ちの表明がまさにスレチw
なぜならPythonと全く関係ございません!これが完璧なスレチの指摘というものだよ
お気持ちとか何だよww 脳みそ付いてんのか?w
うん?10回は全然良いよ、っていうかスレに沿っているなら何回でもええがな
全員がアウトと感じるとかウソつくなよw 君たちのお気持ちの表明がまさにスレチw
なぜならPythonと全く関係ございません!これが完璧なスレチの指摘というものだよ
お気持ちとか何だよww 脳みそ付いてんのか?w
479デフォルトの名無しさん
2022/07/23(土) 11:49:41.79ID:Py93vpAm >>476
> ボクちゃんが気に食わなかったからスレチですってことですかぁああああ???
ダメな理由は前に書いてあるだろ...
> スレタイも読めないのか?
> ここは超初心者用な
> びっくりしましたぁぁああああああwwww
お前の無能さにこっちがびっくりだよw
> ボクちゃんが気に食わなかったからスレチですってことですかぁああああ???
ダメな理由は前に書いてあるだろ...
> スレタイも読めないのか?
> ここは超初心者用な
> びっくりしましたぁぁああああああwwww
お前の無能さにこっちがびっくりだよw
480デフォルトの名無しさん
2022/07/23(土) 11:51:51.55ID:NAv7kQq5481デフォルトの名無しさん
2022/07/23(土) 11:52:41.39ID:lkZCuVJ2482デフォルトの名無しさん
2022/07/23(土) 11:53:42.77ID:lkZCuVJ2 >>480
はい、じゃあ全員じゃないね、答え合わせありがとうw
はい、じゃあ全員じゃないね、答え合わせありがとうw
483デフォルトの名無しさん
2022/07/23(土) 12:01:36.99ID:LCkddkGN484デフォルトの名無しさん
2022/07/23(土) 12:01:47.65ID:LCkddkGN485デフォルトの名無しさん
2022/07/23(土) 12:02:11.20ID:cx+wDCne486デフォルトの名無しさん
2022/07/23(土) 12:12:16.70ID:zqWGCIwO 今日の様に暑いとID:lkZCuVJ2みたいな奴が犯罪にはしらないか心配になるw
487デフォルトの名無しさん
2022/07/23(土) 12:12:53.56ID:DC0ZGSft 462です。
スレ見なおしたけど反省するようなレスしていない
449で予想外のツッコミ受けて驚いたが。
自治厨の相手はしたくないので、この件のコメントはこれが最初で最後
スレ見なおしたけど反省するようなレスしていない
449で予想外のツッコミ受けて驚いたが。
自治厨の相手はしたくないので、この件のコメントはこれが最初で最後
488デフォルトの名無しさん
2022/07/23(土) 12:13:10.23ID:Sr9KJy9/ 絶望的に適性ないやつがいるな
そんな無駄なことは今すぐやめろ
限りある人生をもっと有意義なことに使え
そんな無駄なことは今すぐやめろ
限りある人生をもっと有意義なことに使え
489デフォルトの名無しさん
2022/07/23(土) 12:16:15.57ID:cx+wDCne まあ反省できるようなやつだったら最初からこんなことしないわな
490デフォルトの名無しさん
2022/07/23(土) 12:39:52.71ID:zqWGCIwO コード出して色々言うのはいいけど適切なスレでやってねって話なんだけど自治厨とか言い出してる時点で反省なんてしてないわなw
491デフォルトの名無しさん
2022/07/23(土) 12:46:43.25ID:b3gXMMo0 自己中なんだろ
自分以外見えてない
自分以外見えてない
492デフォルトの名無しさん
2022/07/23(土) 15:41:49.42ID:FAO+OpS7 ネオ麦茶
493デフォルトの名無しさん
2022/07/23(土) 17:14:17.68ID:QCnlUATD494デフォルトの名無しさん
2022/07/23(土) 18:06:21.74ID:KR63qUqp 随分とハイコンテクストな犯罪教唆だな
495デフォルトの名無しさん
2022/07/23(土) 21:20:29.07ID:MqDru3I9 >>460
例えばRuby では、input.csv が以下の内容として、
a
b,c
require 'csv'
require 'open-uri'
url = "http://localhost:8000/input.csv"
CSV.parse( open( url ).string ).each do | row | # 1行ずつ処理する
p row
end
出力
["a"]
["b", "c"]
または、curl コマンドを使う事もできる。
input_csv = `curl #{ url }`
例えばRuby では、input.csv が以下の内容として、
a
b,c
require 'csv'
require 'open-uri'
url = "http://localhost:8000/input.csv"
CSV.parse( open( url ).string ).each do | row | # 1行ずつ処理する
p row
end
出力
["a"]
["b", "c"]
または、curl コマンドを使う事もできる。
input_csv = `curl #{ url }`
496デフォルトの名無しさん
2022/07/23(土) 22:54:21.58ID:jIlcufBL 完全自殺なんチャラって本も流行ったなぁ
497デフォルトの名無しさん
2022/07/24(日) 05:32:21.57ID:or5HZl/v 1.適性がない、というその適性を定義してください。
2.適性がない、となぜ判断したのか 1. をもとに詳しく記述してください
3.1.2.が出来ないのではないのならば、あなたこそ、あなたのいう適性をもちあわせていない、と私は判断します
以上
2.適性がない、となぜ判断したのか 1. をもとに詳しく記述してください
3.1.2.が出来ないのではないのならば、あなたこそ、あなたのいう適性をもちあわせていない、と私は判断します
以上
498デフォルトの名無しさん
2022/07/24(日) 10:18:49.14ID:VDm4wods499デフォルトの名無しさん
2022/07/24(日) 12:33:12.33ID:DlP0Pw4T500デフォルトの名無しさん
2022/07/24(日) 13:48:43.90ID:Kadg5L8P >>499
ここで政治の話は止めて頂きたい
ここで政治の話は止めて頂きたい
501デフォルトの名無しさん
2022/07/24(日) 14:03:28.06ID:s7YMPwIQ >>500
おまえは馬鹿
おまえは馬鹿
502デフォルトの名無しさん
2022/07/24(日) 14:09:01.48ID:nqGRTr2S プログラミングしてると、
Delete、Enter、BackSpace、半角全角、home、end
ここらへんがホームポジションから遠すぎて困るな
半角、全角は無変換と変換に割り当てたんだけど
みんなはキーマップカスタマイズとかしてるの?
Delete、Enter、BackSpace、半角全角、home、end
ここらへんがホームポジションから遠すぎて困るな
半角、全角は無変換と変換に割り当てたんだけど
みんなはキーマップカスタマイズとかしてるの?
503デフォルトの名無しさん
2022/07/24(日) 14:12:13.07ID:s7YMPwIQ それはPythonと関係のある話題ですか?
504デフォルトの名無しさん
2022/07/24(日) 14:14:56.30ID:QkJUlhBv 手を叩いて大きくすると良い感じになるよ。
505デフォルトの名無しさん
2022/07/24(日) 14:20:46.38ID:VlRFcd7U >>499
メンバシップ関数を定義するのけ?
メンバシップ関数を定義するのけ?
506デフォルトの名無しさん
2022/07/24(日) 14:43:22.46ID:Kadg5L8P >>502
ctrl<->capsの入れ替えくらい
ctrl<->capsの入れ替えくらい
507デフォルトの名無しさん
2022/07/24(日) 16:12:15.26ID:ydeGY7xn508デフォルトの名無しさん
2022/07/24(日) 16:23:06.62ID:oKMHGzT9 集団自決したはずなのに生きていた人が死去
509デフォルトの名無しさん
2022/07/24(日) 19:45:11.64ID:e/hljxBO スクレイピングの練習中でリスト内包表記とre.search()について教えてください
seleniumとlxmlで取得したデータの変換がうまく行かないです
url_list = ['https://www.tekitou'+re.search(r'[^0-9A-Z]dp[^0-9A-Z]([0-9A-Z]{10})([^0-9A-Z]|$)',a.get('href')).group() for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]
html.cssselect('#tekitou > div > div > a:nth-child(1)').get('href')の時点で取得できてるurlは下記のような感じです。
https://www.tekitou/%〇〇%〇〇/dp/(10桁の英数字 英は半角大文字)/ref=zg_bs_10桁の数字_2桁の数字/3桁の数字-7桁の数字-7桁の数字?pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1
https://www.tekitou/music/player/ref=zg_bs_10桁の数字_2桁の数字/3桁の数字-7桁の数字-7桁の数字?pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1
re.search().group()する前のurlが/dp/ありのurlと/dp/なしのurlに分かれるのですが、
re.search(r'[^0-9A-Z]dp[^0-9A-Z]([0-9A-Z]{10})([^0-9A-Z]|$)',a.get('href')).group()の作業の際にエラーがでてしまうため
/dp/なしのurlを削除するようにするか、
pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1の(10桁の英数字 英は半角大文字)を取得するようにしたいです。
なにかうまい表記があれば教えてください
seleniumとlxmlで取得したデータの変換がうまく行かないです
url_list = ['https://www.tekitou'+re.search(r'[^0-9A-Z]dp[^0-9A-Z]([0-9A-Z]{10})([^0-9A-Z]|$)',a.get('href')).group() for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]
html.cssselect('#tekitou > div > div > a:nth-child(1)').get('href')の時点で取得できてるurlは下記のような感じです。
https://www.tekitou/%〇〇%〇〇/dp/(10桁の英数字 英は半角大文字)/ref=zg_bs_10桁の数字_2桁の数字/3桁の数字-7桁の数字-7桁の数字?pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1
https://www.tekitou/music/player/ref=zg_bs_10桁の数字_2桁の数字/3桁の数字-7桁の数字-7桁の数字?pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1
re.search().group()する前のurlが/dp/ありのurlと/dp/なしのurlに分かれるのですが、
re.search(r'[^0-9A-Z]dp[^0-9A-Z]([0-9A-Z]{10})([^0-9A-Z]|$)',a.get('href')).group()の作業の際にエラーがでてしまうため
/dp/なしのurlを削除するようにするか、
pd_rd_i=(10桁の英数字 英は半角大文字)&psc=1の(10桁の英数字 英は半角大文字)を取得するようにしたいです。
なにかうまい表記があれば教えてください
510デフォルトの名無しさん
2022/07/24(日) 19:55:36.27ID:IZxLU3+7 秀丸最強
511デフォルトの名無しさん
2022/07/24(日) 20:08:14.75ID:JBPZyDq1 アマゾンのURLくらいググったら色々出てきそうだけどクソ見にくい正規表現で無理せずにスラッシュでsplitでifにlengthとアスキー確認くらいでいいんじゃないの?
512デフォルトの名無しさん
2022/07/24(日) 23:38:55.79ID:GhBFnIe8 プログラミングって直感じゃね?
論理は直感を説明するのに用いることに有効だけど
プログラム書くのにいちいち考えないっしょ
考えるのは設計とテストだけだし
論理は直感を説明するのに用いることに有効だけど
プログラム書くのにいちいち考えないっしょ
考えるのは設計とテストだけだし
513デフォルトの名無しさん
2022/07/24(日) 23:39:26.11ID:GhBFnIe8 それ以外にもあるかもしれんけど
514デフォルトの名無しさん
2022/07/24(日) 23:43:50.14ID:nVQ6Xq/p >>509
pd_rd_iから取得
url_list = ['https://www.tekitou/dp/{0}/'.format(re.findall(r'\?pd_rd_i=(\w+)', a.get('href'))[0]) for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]
pd_rd_iから取得
url_list = ['https://www.tekitou/dp/{0}/'.format(re.findall(r'\?pd_rd_i=(\w+)', a.get('href'))[0]) for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]
515デフォルトの名無しさん
2022/07/25(月) 00:22:12.12ID:kwIPZDW5 argparse使って、たとえば1つ目の位置引数(スイッチのようなもの)の違いで、それ以降は全く異なる引数ルールになるような場合はどのような指定をすればよいでしょうか?
それともそれぞれ別のルールを定義してパースする必要がありますか?
すごく簡単な例ですが、addの場合とlistの場合で指定する引数が違うようなものとか
user.py
-add name [--prop property]
-list [--group group]
それともそれぞれ別のルールを定義してパースする必要がありますか?
すごく簡単な例ですが、addの場合とlistの場合で指定する引数が違うようなものとか
user.py
-add name [--prop property]
-list [--group group]
516デフォルトの名無しさん
2022/07/25(月) 00:41:00.73ID:YiCqNPeZ517デフォルトの名無しさん
2022/07/25(月) 00:57:12.30ID:kwIPZDW5 >>516
なるほど。argparseで一度にまとめてできればと思ったんですが、できないってことですね…
なるほど。argparseで一度にまとめてできればと思ったんですが、できないってことですね…
518デフォルトの名無しさん
2022/07/25(月) 01:00:15.74ID:gTrk2zFk >>509
例えば、Ruby なら、
URI.split で、URL のパス部分だけを抜き出して、
その文字列内に、/dp/ が含まれているかで条件分岐する
require 'uri'
dp_url = "http://example.com/%E3%81%82/dp/a" # あ = %E3%81%82
non_dp_url = "http://example.com/%E3%81%82/a"
p dp_ary = URI.split( dp_url )
p non_dp_ary = URI.split( non_dp_url )
#=> ["http", nil, "example.com", nil, nil, "/%E3%81%82/dp/a", nil, nil, nil]
#=> ["http", nil, "example.com", nil, nil, "/%E3%81%82/a", nil, nil, nil]
# パス部分
p dp_ary[ 5 ]
p non_dp_ary[ 5 ]
#=> "/%E3%81%82/dp/a"
#=> "/%E3%81%82/a"
p dp_ary[ 5 ].match( '/dp/' )
p non_dp_ary[ 5 ].match( '/dp/' )
#=> <MatchData "/dp/"> : 一致する
#=> nil : 一致しない
例えば、Ruby なら、
URI.split で、URL のパス部分だけを抜き出して、
その文字列内に、/dp/ が含まれているかで条件分岐する
require 'uri'
dp_url = "http://example.com/%E3%81%82/dp/a" # あ = %E3%81%82
non_dp_url = "http://example.com/%E3%81%82/a"
p dp_ary = URI.split( dp_url )
p non_dp_ary = URI.split( non_dp_url )
#=> ["http", nil, "example.com", nil, nil, "/%E3%81%82/dp/a", nil, nil, nil]
#=> ["http", nil, "example.com", nil, nil, "/%E3%81%82/a", nil, nil, nil]
# パス部分
p dp_ary[ 5 ]
p non_dp_ary[ 5 ]
#=> "/%E3%81%82/dp/a"
#=> "/%E3%81%82/a"
p dp_ary[ 5 ].match( '/dp/' )
p non_dp_ary[ 5 ].match( '/dp/' )
#=> <MatchData "/dp/"> : 一致する
#=> nil : 一致しない
519デフォルトの名無しさん
2022/07/25(月) 01:03:04.79ID:oCKr0yXR add_subparsersでやればいいんじゃない
520デフォルトの名無しさん
2022/07/25(月) 09:00:21.95ID:9Mfr9nvz >>512
うう……設計がプログラミングに含まれてない……うそやろ……
うう……設計がプログラミングに含まれてない……うそやろ……
521デフォルトの名無しさん
2022/07/25(月) 09:35:32.16ID:Tcjxae6G >>509
/dp/(10桁の英数字 英は半角大文字)があれば、その(10桁の英数字 英は半角大文字)を取得
?pd_rd_i=(10桁の英数字 英は半角大文字)があれば、その(10桁の英数字 英は半角大文字)を取得
どちらも無ければ空文字を返しエラーとはならない方法
url_list = ['https://www.tekitou/dp/{0}/'.format(re.search(r'(?<=/dp/)(\w+)|(?<=\?pd_rd_i=)(\w+)|$', a.get('href')).group()) for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]
/dp/(10桁の英数字 英は半角大文字)があれば、その(10桁の英数字 英は半角大文字)を取得
?pd_rd_i=(10桁の英数字 英は半角大文字)があれば、その(10桁の英数字 英は半角大文字)を取得
どちらも無ければ空文字を返しエラーとはならない方法
url_list = ['https://www.tekitou/dp/{0}/'.format(re.search(r'(?<=/dp/)(\w+)|(?<=\?pd_rd_i=)(\w+)|$', a.get('href')).group()) for a in html.cssselect('#tekitou > div > div > a:nth-child(1)')]
522デフォルトの名無しさん
2022/07/25(月) 09:43:03.78ID:VgpbHR93 >>520
Don't think. Feeeel!!
Don't think. Feeeel!!
523デフォルトの名無しさん
2022/07/25(月) 10:25:41.85ID:kwIPZDW5524デフォルトの名無しさん
2022/07/25(月) 12:52:01.49ID:gFjrq6Gs >>520
設計は人が考えたものを具現化するプロセスまでの事でプログラミングに含まれないよね
プログラミングは優秀な言語と開発支援ツールに頼って直感のままに組み立てる作業
人が本来やることは自身の進化とソフトウエアのアップデート対応に強い設計する事と作業を減らす工夫と世界が前進することへの貢献
設計は人が考えたものを具現化するプロセスまでの事でプログラミングに含まれないよね
プログラミングは優秀な言語と開発支援ツールに頼って直感のままに組み立てる作業
人が本来やることは自身の進化とソフトウエアのアップデート対応に強い設計する事と作業を減らす工夫と世界が前進することへの貢献
525デフォルトの名無しさん
2022/07/25(月) 12:57:49.15ID:gFjrq6Gs 簡単そうに言ってるけど
かなり時間かけて様々なことを知らないといけないし知らない未知のことへの挑戦もしてかなきゃいけない
そーゆー志を持った人がこのスレの中に居てくれたら俺は嬉しい
かなり時間かけて様々なことを知らないといけないし知らない未知のことへの挑戦もしてかなきゃいけない
そーゆー志を持った人がこのスレの中に居てくれたら俺は嬉しい
526デフォルトの名無しさん
2022/07/25(月) 13:20:20.14ID:9Mfr9nvz >>524
(それコーディングじゃない?)
(それコーディングじゃない?)
527デフォルトの名無しさん
2022/07/25(月) 14:36:18.33ID:evu7R6rH docker入れてみたけどやっぱ仮想環境だからGB単位でメモリそこそこつかうんだよな
アイドル状態で8GB、vscodeで1〜2GB、dockerで2GB、Chromeで動画見ながら作業したら2〜3GBぐらい使うからギリギリで困る
やっぱメモリ32GBは入れないとだめか
アイドル状態で8GB、vscodeで1〜2GB、dockerで2GB、Chromeで動画見ながら作業したら2〜3GBぐらい使うからギリギリで困る
やっぱメモリ32GBは入れないとだめか
528デフォルトの名無しさん
2022/07/25(月) 15:07:03.89ID:fmU0SO/o >>526
(ちんこかゆい)
(ちんこかゆい)
529デフォルトの名無しさん
2022/07/25(月) 16:14:04.12ID:GOtCNvAE530デフォルトの名無しさん
2022/07/25(月) 19:47:19.85ID:GWKUHzSt531デフォルトの名無しさん
2022/07/25(月) 19:49:50.49ID:GWKUHzSt seleniumで複数ブラウザ立てて並列処理してみたいけど難しそう
scrapyで楽天からスクレイピングしてみたら非同期処理?のせいで早すぎて速攻アク禁くらった
scrapyで楽天からスクレイピングしてみたら非同期処理?のせいで早すぎて速攻アク禁くらった
532デフォルトの名無しさん
2022/07/25(月) 20:11:37.41ID:NlibKZuA533デフォルトの名無しさん
2022/07/25(月) 20:20:18.30ID:mO6SEFWJ 流石にもういきなり逮捕はされないと思うけど、librahackみたいなことが起こらないとは言えないから怖いよねー。
アクセスログで見ても、ギリギリ人間がアクセスしてるって言い訳できるぐらいの間隔を乱数で作ってsleepしてるわ。
アクセスログで見ても、ギリギリ人間がアクセスしてるって言い訳できるぐらいの間隔を乱数で作ってsleepしてるわ。
534デフォルトの名無しさん
2022/07/25(月) 21:11:33.84ID:Tcjxae6G535デフォルトの名無しさん
2022/07/25(月) 21:14:45.44ID:GF1rw+EH イヤイヤイヤイヤ、普通にクソ見にくいでしょ。
他人が理解できないものを書くほうが偉いって風潮何とかならんの?
他人が理解できないものを書くほうが偉いって風潮何とかならんの?
536デフォルトの名無しさん
2022/07/25(月) 21:44:24.25ID:Tcjxae6G >>535
偉いとかじゃなくて便利なんだよ
>>521の正規表現は別に難しい部類じゃない、\wは単語文字という意味で英数字も含まれる
\w+で単語文字が1個以上という意味になる、その前の(?<=...)は後読みアサーションで
これにマッチした後の\w+をサーチしているわけで基本というか、ちょっと勉強すれば、というか
正規表現の仕様に例が載ってるから、例みたらすぐ理解できるよ
https://docs.python.org/ja/3/library/re.html
自分的には最後の|$が工夫した点で、コレでサーチできなかった場合に空文字を取得させることができる
正規表現使わずにスラッシュでsplitでifにlengthとアスキー確認なんかの方が見にくいだろうし
面倒すぎてやっとれんよ
偉いとかじゃなくて便利なんだよ
>>521の正規表現は別に難しい部類じゃない、\wは単語文字という意味で英数字も含まれる
\w+で単語文字が1個以上という意味になる、その前の(?<=...)は後読みアサーションで
これにマッチした後の\w+をサーチしているわけで基本というか、ちょっと勉強すれば、というか
正規表現の仕様に例が載ってるから、例みたらすぐ理解できるよ
https://docs.python.org/ja/3/library/re.html
自分的には最後の|$が工夫した点で、コレでサーチできなかった場合に空文字を取得させることができる
正規表現使わずにスラッシュでsplitでifにlengthとアスキー確認なんかの方が見にくいだろうし
面倒すぎてやっとれんよ
537デフォルトの名無しさん
2022/07/25(月) 22:07:08.94ID:5m9dN2FM (超初心者用)
538デフォルトの名無しさん
2022/07/25(月) 22:50:49.78ID:Tcjxae6G539デフォルトの名無しさん
2022/07/25(月) 23:03:45.65ID:gTrk2zFk WSL2, Docker は、8GB メモリじゃキツイ
16〜32GBは欲しい
16〜32GBは欲しい
540デフォルトの名無しさん
2022/07/25(月) 23:56:34.13ID:XTViXxR/ >>536
スラッシュでsplitでアスキー確認って
[i for i in ○.split('/') if len(i) == 10 and i.isascii()]
で終わりでしょ
それ自体に難しさも見にくさも感じないが
スラッシュでsplitでアスキー確認って
[i for i in ○.split('/') if len(i) == 10 and i.isascii()]
で終わりでしょ
それ自体に難しさも見にくさも感じないが
541デフォルトの名無しさん
2022/07/26(火) 01:23:31.22ID:HcfNtCqI 正規表現学びたいけど複雑すぎて訳分かんねえよ
なんか練習できるところないの?
ゲームっぽく遊べたりする所どっかあるだろ?
なんか練習できるところないの?
ゲームっぽく遊べたりする所どっかあるだろ?
542デフォルトの名無しさん
2022/07/26(火) 03:23:25.62ID:fUa59wf/ ターミナル
543デフォルトの名無しさん
2022/07/26(火) 08:00:48.09ID:hxnsYVU0 >>540
これはアカンでしょ、ifってそんなけ? /dp/の判定が無いし
/dp/が無かった場合にpd_rd_iから取得する処理が無いし
これでいいなら正規表現ならこうじゃわいな
re.search(r'\w{10}|$', ○).group()
これはアカンでしょ、ifってそんなけ? /dp/の判定が無いし
/dp/が無かった場合にpd_rd_iから取得する処理が無いし
これでいいなら正規表現ならこうじゃわいな
re.search(r'\w{10}|$', ○).group()
544デフォルトの名無しさん
2022/07/26(火) 08:23:18.19ID:hxnsYVU0 findall使った方がいいか、こっちの方が>>540と処理結果同じだわ
re.findall(r'\w{10}', ○)
re.findall(r'\w{10}', ○)
545デフォルトの名無しさん
2022/07/26(火) 09:42:11.06ID:28W+mdVQ 10桁英数のチェックが必要ないならこれでいけるんじゃね
([i[:10] for i in url.split("/dp/") + url.split("pd_rd_i=") if not i.startswith("https:")] + [""])[0]
チェック必要なら1行ではきびしいか
([i[:10] for i in url.split("/dp/") + url.split("pd_rd_i=") if not i.startswith("https:")] + [""])[0]
チェック必要なら1行ではきびしいか
546デフォルトの名無しさん
2022/07/26(火) 10:10:32.06ID:2F7nQnXP pd_rd_iは必須じゃないからなあ
547デフォルトの名無しさん
2022/07/26(火) 11:04:25.18ID:hxnsYVU0 >>545 を抽象化+10桁チェック+isasciiチェック追加(10桁チェックは不要だとは思うけども・・)
[i[:10] for i in url.split("/dp/")[1:] or url.split("pd_rd_i=")[1:] if len(i[:10])==10 and i[:10].isascii()]
気づいたんですけどこのisascii()でのチェックはasciiのチェックであって、ascii文字のチェックじゃないから
英数字だけじゃなくて/やtabやらもTrue判定しちゃいますからダメですね
ちなみに>>521も10桁チェックは入っていないのですが、入れた場合は以下のようになりまして
その場合もやはり分かりやすい、可読性が良い、簡潔、何をしているかすぐ分かる
正規表現スキになっちゃったって方はgoodボタン押してください^^
re.search(r'(?<=/dp/)(\w{10})|(?<=\?pd_rd_i=)(\w{10})|$', url).group()
[i[:10] for i in url.split("/dp/")[1:] or url.split("pd_rd_i=")[1:] if len(i[:10])==10 and i[:10].isascii()]
気づいたんですけどこのisascii()でのチェックはasciiのチェックであって、ascii文字のチェックじゃないから
英数字だけじゃなくて/やtabやらもTrue判定しちゃいますからダメですね
ちなみに>>521も10桁チェックは入っていないのですが、入れた場合は以下のようになりまして
その場合もやはり分かりやすい、可読性が良い、簡潔、何をしているかすぐ分かる
正規表現スキになっちゃったって方はgoodボタン押してください^^
re.search(r'(?<=/dp/)(\w{10})|(?<=\?pd_rd_i=)(\w{10})|$', url).group()
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★3 [BFU★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 [蚤の市★]
- 【いちご高騰】ヤマザキのクリスマスケーキ、いちご無し販売 [おっさん友の会★]
- 【音楽】『日本レコード大賞』各賞発表! 大賞候補にILLIT、M!LK、ふるっぱー、幾田りら、アイナ、ミセスら… 作詩賞は指原莉乃 [冬月記者★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★10 [樽悶★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- 中国、レアアース輸出制限wwwwwwwwwwwwwwwwwwwwwwww🎌 [329329848]
- 中国「高市が謝罪しなければ、ハニトラに引っかかった日本の政治家を公表する」 [804169411]
- 【35🌸専】なんG さくらみこ桃鉄配信実況スレ🏡【ホロライブ▶】
- 【実況】博衣こよりのえちえちカービィのエアライダー🧪★3
- 【すべてが】𝗮𝗺͜𝗮͉𝘇𝗼𝗻ブラックフライデーSALE総合【いいだろ!】 [194819832]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
