くだすれPython(超初心者用) その45【Ruby禁止】

■ このスレッドは過去ログ倉庫に格納されています
2019/10/16(水) 10:17:12.96ID:dCHq3Ix4
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その44【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1563969768/
2019/11/07(木) 19:05:01.58ID:i5KqlsP0
>>133
ちょっとまて
「一旦アンインストール」をする前に
pip freeze > hogehoge.txt
みたいなコマンド(正確なのは
ぐぐるか、このスレか初心者用じゃないほうのPythonスレにこないだ書いたから、
検索してくれ)で
pipしてたもののリストをだしておいて
入れなおしのあとは
そのリストをpipに食わせて連続インスコって
楽ができるはずだ
135128
垢版 |
2019/11/08(金) 10:22:58.23ID:a+/GHk6R
>>134
うまくいきました、ありがとうございます

実はpywin32を使ってエクセルを操作していたのですが、
pywin32のインストールの時に、インストーラーでインストールして
そのままでは動かなくて、Python\Lib... 内の何かのファイル2つを
上層のディレクトリにコピーしたら動くようになった記憶があるのですが
その記事がいくら検索しても出てこなくて、困ってます

上記の説明でわかるでしょうか…
136128
垢版 |
2019/11/08(金) 10:28:32.51ID:a+/GHk6R
自己解決しました
1時間くらい探して見つからなかったからこちらに書いたのに
書いた直後に発見した…

>copy pywintypes26.dll and pythoncom26.dll
>from C:\Python26\Lib\site-packages\pywin32_system32
>to C:\Python26\Lib\site-packages\win32

スレ汚し失礼しました
137デフォルトの名無しさん
垢版 |
2019/11/08(金) 11:45:58.57ID:3E1/z7K0
そのやり方は間違ってる
おかしなやり方を広めないように
2019/11/08(金) 12:33:36.60ID:QLJ5OLdG
転職したくてpythonの勉強始めて約1ヶ月弱・・・
文法の綴りミス多かったり
ルールとか少しづつしか理解出来てなくて悔しい
今までやったこと無い事ばかりでどうすればちゃんと理解しながら勉強出来ますか?
139デフォルトの名無しさん
垢版 |
2019/11/08(金) 12:54:44.88ID:3E1/z7K0
一度に多くのことをやりすぎない
細かく分けて一つ一つ理解する
その積み重ねでしかない
2019/11/08(金) 14:20:41.44ID:JHJDYmIb
>>138
基礎がそもそも出来てないだろうからとりあえず入門書的な本を買う
詰まったら本見て調べる。出て来なければググる
あとはひたすら書いて慣れるのみ。ゲームと同じで攻略本読みまくるよりプレイして経験積むほうが成長できるしね
141デフォルトの名無しさん
垢版 |
2019/11/08(金) 14:32:26.25ID:3E1/z7K0
最近の入門書は基礎書いてないからなぁ
2019/11/08(金) 15:04:10.78ID:QLJ5OLdG
レスありがとうございます。
本は二冊買っていてチュートリアルのサイトも見ながらもう一度初めの基礎からしっかり覚えて行こうと思います。
2019/11/08(金) 16:55:32.83ID:HH11ynhJ
>>135-136
コピーして解決☆彡じゃなくてだな

オリジナルのファイルがある階層に
PATH(環境変数)が通ってないのが原因だろうから
site-packagesへのパスを通せ

というか
2系はもうすぐ終了するので、使うと後ですごい苦労するぞ。
最初から3系使え。
144128
垢版 |
2019/11/08(金) 17:17:29.97ID:a+/GHk6R
>>143
詳しくありがとうございます
なるほどPATH通せばいいだけだったんですね…
こんな初歩的なことに気づかずお恥ずかしい限り

後出しになってしまって申し訳ありませんが
上に貼った英語の記事は26になってますが、自分はPython3.8です
ご助言ありがとうございます
2019/11/08(金) 17:24:50.12ID:uZmDoP6Q
うちもPATHおかしくなってるっぽいけどなんか問題なく動いてるから調べてないや
VScodeのターミナルから全部入れて普通に使えてたがAnaconda入れてからターミナルでpip出来なくなった、AnacondaPromptからなら入る
2019/11/09(土) 03:50:38.37ID:FjA6FVDT
環境変数は書く順番で通るパス変わるからな。bashなら実行環境でwhich pythonて打ったら自分の使ってるのがどれかわかるよ。
Anacondaは依存を最高に管理してくれてるから、基本conda使うんだよ。pandas のこのversionには依存してるnumpyはこのちょっと古いversionまでしか上げないとかな。
何でも最新入れればいんじゃないんだよ。condaになければpipだけど。使うときpip install numpyとか使わないでAnacondaのpipがあるフルパス スペースinstallスペースnumpyとかって使うんだよ。
そうじゃないとwhich pip で通ってるMacでいうとpython2.7にnumpy入れるだけだからな。
Anacondaは使えないとかいうバカをたまにみるけども。
147デフォルトの名無しさん
垢版 |
2019/11/09(土) 11:17:23.29ID:BZG37V3w
pathに2と3のpathが混ざってるとかありえないんだが
148デフォルトの名無しさん
垢版 |
2019/11/09(土) 11:26:40.59ID:thUc1KqM
2ヶ月目くらいの初心者ですが 図書館で子供向けのPython入門本と
コーリー・アルソフの「独学プログラマー」ってPython本借りて
基礎からやっています この本はなかなかいいかもしれません 
2019/11/09(土) 11:45:11.23ID:06f/2UDZ
>>147
Winユーザーだけど、
まぜてるよ?

まだ2系時代の遺産をリメイクし終えてないから、
ふだんは2優先起動で、

3優先にしたいときだけは、
「3を優先するようにするバッチ」からコマンドプロンプト出してる。


Macを使わされてた時期もあるけど(当時は2しかなかったけど)
システムのPythonと自分のいじるPythonわけてたから
環境変数に書く順番はジッサイトテモダイジだった
150デフォルトの名無しさん
垢版 |
2019/11/09(土) 11:50:44.57ID:BZG37V3w
windows だけど
2 しか使わない console と
3 しか使わない console に
分けてる
2019/11/09(土) 11:56:43.77ID:jdniA0Oi
Winユーザーだけど混ぜてないなあ
pylauncherだけパス通してある
2019/11/09(土) 11:57:21.86ID:jdniA0Oi
んで2と3のどっちを起動するかはシバンに書いてある
153デフォルトの名無しさん
垢版 |
2019/11/09(土) 12:05:12.44ID:2CZWzZ9R
プロジェクトごとに仮想環境作ってそこを使うようにしてるわ
ごっちゃにならないし、補完もできるし楽
グローバルな環境でpipとかまず使わん
2019/11/09(土) 12:25:29.79ID:+gucf0S5
>>151-152
Windowsだとそれが一番楽だよね。

あと、2、3ともにPATHを通して(一応3が優先にしてる)
あと、python.exe、pythonw.exe をそれぞれ、
python2.exe、pythonw2.exe、python3.exe、pythonw3.exe のようなシンボリック・リンクを作っておいて、
これでコンソールというか実行するインタープリターを使い分けしてる。

同様に、py2.exe py3.exeっていうシンボリック・リンクで楽ちん呼び出しもしてるな。

pip.exeがそんな感じになってるのでその真似なんだけど。
2019/11/09(土) 12:33:58.85ID:L15kxdpx
pylauncherとvirtualenv/venvの併用だな。ディスクをモリモリ喰うのが難点だが。
2019/11/09(土) 13:29:21.58ID:gfwYwMk7
classをはじめて触ってるのですが
class Test :
__def __init__(self):
____pass

みたいに書くと思うんですが、インスタンスを作成するときにtes=Test()としないとエラー吐くのはどうしてですか?
class Test() :
__def
と書いていくのではないのですか
classの()はどうして書かないの?
書かないのにインスタンス作成するときは書くのはなぜ?
2019/11/09(土) 13:31:12.22ID:thUc1KqM
>>156
書いても書かなくても大丈夫なのです
試してみて
158デフォルトの名無しさん
垢版 |
2019/11/09(土) 13:42:43.23ID:BZG37V3w
class Test(object):
159工学部生
垢版 |
2019/11/09(土) 14:50:22.61ID:+vhC4kuU
ガッコで画像処理の勉強やったりしている工学部生ですが、
すばらしい画像処理やPythonのサイトがあったのでご報告します。
工学全般に説明されているので、お気に入り登録をおすすめします。
またいつか、質問があったりしたら来ますね。

https://algorithm.joho.info/image-processing/digital-imaging/
160デフォルトの名無しさん
垢版 |
2019/11/09(土) 15:13:06.37ID:BZG37V3w
GJ
2019/11/09(土) 15:16:50.65ID:gfwYwMk7
>>157-158
ふーむ…(object)で調べたらなんとなくわかったような分からないような

もうひとつ聞きたいのですが
いまデータベースにアクセスして各種パラメータを取る関数?を作ってます

get_ids():
__なにかの処理
return ids

get_names():
__なにかの処理
return names

という感じです
これはclass化するべきものではないのかなと思ったので
class GetItemParamsを作成し、配下に各メソッドを作ろうかなと思ってるのですが
これって考え方として合ってるんですか?
なんか
get = GetItemParams()
get.names()とかって冗長な気がします
2019/11/09(土) 15:18:34.27ID:gfwYwMk7
GetItemParams.pyファイルにコンストラクタがわりのグローバル変数と各関数書いて、importする方が適切なんでしょうか?

なんかよくわからなくなってきました
こういうシチュエーションのときはどう書いてったらいいんでしょうか
163デフォルトの名無しさん
垢版 |
2019/11/09(土) 15:20:01.73ID:BZG37V3w
変数名を get にするのは混乱の元だから辞めた方が良い
クラスにするのが抵抗あったらモジュールにするだけでも良い
db とのコネクションをどうするかとかも一緒に考えて
164デフォルトの名無しさん
垢版 |
2019/11/09(土) 15:51:17.74ID:/O8nGewy
>>156
classの()は継承する時に親クラスを書くためのもので引数とは違う
何も継承しないならわざわざ()だけ書かなくても良くなってるだけ
2019/11/09(土) 15:57:58.96ID:thUc1KqM
>>156
僕も初学者なのでアレですが…
クラスを定義する時の class Test(): の括弧のなかにはselfが入っていて、
それは a = class() とした時に第一引数self = a は
Pythonが自動的に渡してくれるから省略できるのだと思います
2019/11/09(土) 16:00:34.70ID:thUc1KqM
>>164
そうなんですね... 勉強になります...
167デフォルトの名無しさん
垢版 |
2019/11/09(土) 16:24:23.82ID:q4QDxUWz
>>165
それは>>148で学んだ知識なのか?
2019/11/09(土) 16:26:16.39ID:thUc1KqM
>>167
ちょっとうろ覚えで書いています...
あとで見直してみますね
169165
垢版 |
2019/11/09(土) 18:58:21.31ID:thUc1KqM
>>165 の話ですが..ちょっと認識違いのようでした
>>164 さんの言うとおり 既存のクラスを継承する時には class(): で使い、
通常は書いても書かなくても良い 
何も書かなければ object型を継承したとみなされるようです 
失礼しました
2019/11/09(土) 19:49:26.66ID:mZ1z6c9X
Qiitaで初心者が書き散らしてるやべー文章みたいだな
2019/11/09(土) 20:03:25.85ID:thUc1KqM
うわぁあああん 頑張る。。。
172デフォルトの名無しさん
垢版 |
2019/11/09(土) 21:51:52.29ID:K6bHYoyh
まぁ、そういうこともあるよね
ドンマイ
173デフォルトの名無しさん
垢版 |
2019/11/10(日) 06:20:36.34ID:ywjUItB+
>>159
そこは超初心者用だ
Pythonに慣れたらいち早く引っ越せ
さっさと卒業しろ
2019/11/10(日) 08:57:54.88ID:vAvO6oJv
>>159
おお
覚えた事が右から左にすぐ抜ける自分にはぴったりのサイトだwww
175デフォルトの名無しさん
垢版 |
2019/11/10(日) 13:27:12.34ID:hRll0rFL
>デジタル画像の画素を数式で表現する場合、一般的には行列を用います。

はぁ?
2019/11/10(日) 13:48:08.23ID:94cuzmld
DataFrameの末行に1次元リストを行方向に結合したい
dfの列数とリストの要素数は合ってる
この場合はどう書くのが早いですか?
177デフォルトの名無しさん
垢版 |
2019/11/10(日) 13:54:18.58ID:hRll0rFL
>>176
https://gist.github.com/anonymous/48f9a7af62af4133e04e0bd19f3f4264
2019/11/14(木) 00:22:53.96ID:SNdbBvwP
ひと月、本見ながらコード書いてて余り理解出来てなかったけど
ここで聞いて基礎復習しながら作ってみたい物を調べながら書きだして3日だけど全然頭に入ってくる感じが違って楽しい!
どうしても分からない事が出てきたら聞きにきますのでその時はどうか宜しくお願いします。
2019/11/14(木) 06:45:13.21ID:KETh1A50
とりあえずGUI表示させてボタンつけたりできて
敷居が超低いことがわかって興奮したけどそれで終わってしまった
ガチ系じゃなくて、ちょっとした作業って具体的に何ができるの
2019/11/14(木) 12:32:22.90ID:AkEZ67b9
>>179
ご質問の趣旨に沿っているか分からないけど、私も趣味でPyQtでちょいちょいツール作っていますよ。
最近作ったもの↓
・子供が迷路たくさんやりといと言うので、迷路作成プログラム(PyQtでプリンタ使う練習)
・車のO2センサー電位を表示するプログラム(マイコンで測定回路を自作。matplotlibとPyQt組み合わせ)
・子供がひと桁の足し算の練習をやりたいというので、足し算ドリル
・物理現象で乱数作る実験したくて、その検証プログラム(トランジスタの電子雪崩回路自作、matplotlibとPyQt組み合わせ)
・フラクタル画像の実験で雪の結晶ぽい画像を描画するプログラム
・車のCAN-BUSをモニターするプログラム
・USBシリアルのモニタ
2019/11/14(木) 13:02:26.42ID:CtpC3PM8
>>179
業務支援スクリプト
2019/11/14(木) 13:56:26.96ID:Gps+nt/a
レフ機から画像のインポート
クリップボードのスタック
端末出力の特定の語の着色
辞書
写真の露出からEV値に変換(現場の明るさの数値化)
フラクタル図形の描写
素因数分解
素数判定
imgur のバグの簡易対処

等等
2019/11/14(木) 14:28:26.43ID:AkEZ67b9
>>182
素数判定ってどうやりました?
私は2から与えられた数の平方根(または半分:mathをimportしない場合)までをひたすらforループで%して
判定するプログラムを作ったのですが、もっとスマートな方法ってありますか?
2019/11/14(木) 14:28:30.33ID:5hP294qc
git系プログラムのプロセス通信を使ったgitクローンのタイムスタンプ同期
2019/11/14(木) 14:34:57.32ID:6h6HwMDb
素数判定ってIF文並べていけばいいだけじゃないの?
186デフォルトの名無しさん
垢版 |
2019/11/14(木) 14:56:48.60ID:c3Z653za
メモリとかファイルアクセス可なら
エラトステネス
2019/11/14(木) 15:10:56.35ID:Gps+nt/a
>>183
素数出したやつキャッシュしておけばもっと早くとかはあるけど
ルートまで単純にチェックするのが簡単なので C言語で書き直した
wolfram などの判定は異常に速いから素数判定の数学の術を知れば
もっと早くなるとおもうので数学の板でそこの住民に聞いてくれ
あいつら素数大好き
2019/11/14(木) 15:24:29.50ID:1CVvHcAw
sympy に素数の関数が沢山有るよ。
189179
垢版 |
2019/11/14(木) 15:50:22.34ID:KETh1A50
>>180,181,182
おぉめちゃくちゃ沢山ありますね
主にPC上での補助ツールの想定しかしていませんでしたが
データさえインポートできれば、ちょっとしたIoTみたいなことができるのですね

JavaScriptのときは実用する機会が多かったのでモチベが続いていたのですが
Pythonで表現できることも多そうなので同じ感じのモチベでやろうと思います
ありがとうございました
190デフォルトの名無しさん
垢版 |
2019/11/14(木) 18:27:10.81ID:Vty2Vo6K
var y=0

func main():
for y in range(4):

y += 1
print(y)

4まで表示したら終了したいのですが、どのようにして処理を終了するのでしょうか
1
2
3
4
1
2
3
4
とメイン関数内で繰り返されます
2019/11/14(木) 18:37:15.62ID:pNqcUeAa
>>190
   >>1
2019/11/14(木) 19:39:30.62ID:zR2SGApq
それよりスレタイだ
スレタイ読め
2019/11/14(木) 19:50:22.85ID:pNqcUeAa
>>192
おお
それも そうだなwww
194デフォルトの名無しさん
垢版 |
2019/11/14(木) 22:48:41.07ID:JLcgFUDX
ソケットプログラミングの実験なんかもPythonでできるし、速度や並行性を要求されないものだったら
大抵Pythonで書いて楽してるな。

その辺を要求されたらC#になる感じだな。
あとはブラウザ上でなんか動かすときのためにJavascriptを知っておけば、
PC上でのプログラミングは大体カバーされる感ある。
2019/11/15(金) 07:42:51.96ID:1PuPU5S7
>>190
これ言語何?
2019/11/15(金) 09:43:06.08ID:gWMbHCLD
if((i%FIZZ)==(i%BUZZ)==0):
上記を含むコードを動かしたところ、意図する動作にはなるのですが
こういう書き方、して良いんでしょうか
(言語によってokだったりngだったりしたような)
この書き方の名称が解らないので調べられません
2019/11/15(金) 12:05:31.28ID:lOWMbTFc
>>195
https://mevius.2ch.net/test/read.cgi/tech/1568531160/442
198デフォルトの名無しさん
垢版 |
2019/11/15(金) 14:13:50.84ID:76R0IrhI
>>196
andの省略で条件の連結が可能
10 < a < 30 みたいに書ける
2019/11/15(金) 17:13:38.60ID:gWMbHCLD
>>198
ありがとうございます
2019/11/15(金) 18:34:18.36ID:7pVJDIaJ
ほんとに初歩の初歩でごめんなさいなんですけど、今電卓を作っていて、ボックスをからにしてから結果を表示したいのですがreturn.self.Box.delete(0,tk.end)と
return self.Box.insert(tk.end,eval(self.Box.get()))
を順番に実行したいのですがどうやっても同時になってしまいます、順番にやる為にはどうすればいいですか?
201デフォルトの名無しさん
垢版 |
2019/11/16(土) 05:52:53.04ID:bkZ6TXWU
ループってなんで難しいんですか(´;ω;`)
2019/11/16(土) 09:02:05.13ID:VdtmVMT7
>>201
loopyだから
203デフォルトの名無しさん
垢版 |
2019/11/16(土) 10:06:59.16ID:bkZ6TXWU
基礎は大事ですか?
204デフォルトの名無しさん
垢版 |
2019/11/16(土) 10:14:55.78ID:t6zcY+AG
初心者はこんなコードを書きやすい
典型的な糞コード

ループ {
sum = _mm_add_ps(sum, data[i]);
}
2019/11/16(土) 10:18:14.83ID:GIYj0orb
フォンノイマン型のコンピュータの効率の良いメモリ活用ために
変数を使ったり代入をするのが
数学的ではない奇妙に見える方法だから
2019/11/16(土) 10:37:59.07ID:wNtItu5d
mp3をvlcから再生するとまともな音質なのにpygame.mixerから再生すると音割れ酷いんですけどどういう違いが考えられますかね?
207デフォルトの名無しさん
垢版 |
2019/11/16(土) 10:49:12.07ID:t6zcY+AG
事前に windows media player 立ち上げて(こっちは立ち上げるだけで何もしない)から実行したら?
208デフォルトの名無しさん
垢版 |
2019/11/16(土) 11:54:36.89ID:QixdnrUX
pythonって何?
209デフォルトの名無しさん
垢版 |
2019/11/16(土) 13:29:03.42ID:EoZMxBL0
オッパイソン。
2019/11/16(土) 13:41:51.01ID:OsJC49HI
>>208 男性器、大蛇。
パイソン= 錦蛇
2019/11/16(土) 14:32:13.94ID:IV2YvwIv
>>204
どうして糞コードなんですか?
sumを使いまわすなってことですか?
2019/11/16(土) 15:47:44.42ID:wNtItu5d
>>207
書き忘れてました。実行環境はラズパイ3です。
vlcプレイヤーを立ち上げた状態でpygameで鳴らしてみましたがやはり同じ曲でも音割れしますね・・・スピーカーを替えても同じでした。
init時のパラメータを調整してみるしかないのかな
213デフォルトの名無しさん
垢版 |
2019/11/16(土) 15:52:13.18ID:MmPHNC45
ぐぐればいっぱい出る
2019/11/16(土) 15:56:19.86ID:wNtItu5d
自己解決しました
215デフォルトの名無しさん
垢版 |
2019/11/17(日) 15:41:37.34ID:1Qw6RGLV
ゲームプログラミングでも上達するなりか?
2019/11/17(日) 15:57:25.83ID:+usv6kar
>>215
名作はもちろん、
つきぬけた糞ゲーをつくるのも、
なかなかにむずかしいと学べるだろうよ。
217デフォルトの名無しさん
垢版 |
2019/11/17(日) 17:20:28.54ID:1Qw6RGLV
テトリスでもかなりむずいよ
2019/11/17(日) 17:21:54.63ID:+usv6kar
>>217
HATETRIS・・・
219デフォルトの名無しさん
垢版 |
2019/11/18(月) 08:06:17.10ID:Z0XWPK/5
r1 = "6x/im-name-5kg/10.x"
r1b = "6x/im-na-me-5kg/10.x"
r2 = "7x/im-250g-name/20.x"
r2b = "7x/im-250g-na-me/20.x"
r3 = "8x/im-1kg-name-1kg/30"
r3b = "8x/im-1kg-na-me-1kg/30"

name部分にはランダムな英語文字列(大文字/小文字のみ)が入ります
na-me は apple -> app-le みたいなパターンです.その他記号や数字は入りません
このname部分だけ抽出したいんですが,正規表現だとどう書くのでしょうか
if使って不格好にやることはできるのですが,遅いです
220デフォルトの名無しさん
垢版 |
2019/11/18(月) 09:45:18.79ID:ahZzeXy3
[A-Za-z\-]+
2019/11/18(月) 10:26:30.32ID:yOEY+vW5
>>219
name以外の部分はそこで列挙したパターンのみなのか、数字や桁数などが可変なのか?
最初に正確な仕様を出さないと、後から五月雨式に追加すると非難されるぞ
2019/11/18(月) 11:06:23.31ID:Z0XWPK/5
そうですね、いままとめるので少々お待ちください…
2019/11/18(月) 11:41:25.16ID:CjfZ5YZK
>>219
im-(?:¥d+k?g-)?(.*?)(?:-¥d+k?g|/)
とか
im-(?:[¥d]+.+-)?([^¥d][A-Za-z]+-?[^¥d][A-Za-z]+)
とか
224デフォルトの名無しさん
垢版 |
2019/11/18(月) 12:19:53.85ID:Z0XWPK/5
可変長文字列/im-名前-重量/2桁の数字 可変長文字列
可変長文字列/im-重量-名前/2桁の数字 可変長文字列
可変長文字列/im-重量-名前-重量/2桁の数字 可変長文字列
という3種類がテンプレートで,重量と名前の表記には揺れがあります
名前ブロックを抽出するのが目的です
例えば~/im-1.5kg-name/xx~のときはnameが欲しい
~/im-100g-n-a-m-e-100g/xx~のときはn-a-m-eが欲しい
225デフォルトの名無しさん
垢版 |
2019/11/18(月) 12:22:23.33ID:Z0XWPK/5
def gen_objects(elems):
____import random,string
____name_pattern = ["name","n-ame","n-a-me","n-a-m-e"]
____weight_pattern = ["100g","1kg","1.5kg"]
____temp = []
____for i in range(elems):
________rand_strings = "".join([random.choice(string.punctuation + string.ascii_letters + string.digits) for i in range(random.randint(4,7))])
________rand_name = random.choice(name_pattern)
________rand_weight = random.choice(weight_pattern)
________rand_footer_num = random.randint(10,99)
________n_w = f"{rand_strings}/im-{rand_name}-{rand_weight}/{rand_footer_num}{rand_strings}"
________w_n = f"{rand_strings}/im-{rand_weight}-{rand_name}/{rand_footer_num}{rand_strings}"
________w_n_w = f"{rand_strings}/im-{rand_weight}-{rand_name}-{rand_weight}/{rand_footer_num}{rand_strings}"
________obj = random.choice([n_w,w_n,w_n_w])
________temp.append(obj)
____return temp

testlist = gen_objects(10)

こういう感じのテストユニットをループで回して正規表現でnameを抽出していってnamelistを作成しようとしています
226デフォルトの名無しさん
垢版 |
2019/11/18(月) 12:24:29.75ID:ahZzeXy3
>>224
>>219 には浮動小数点入ってないな
曖昧過ぎて話にならん
227デフォルトの名無しさん
垢版 |
2019/11/18(月) 12:29:41.86ID:Z0XWPK/5
今は3種類の正規表現パターンでtryとtypeErrorを重ねて抜き出してます
もう少し早くて上手いやり方がないかなと考えています
2019/11/18(月) 12:53:59.47ID:OXFmVxDx
https://ideone.com/VVB2r0
2019/11/18(月) 14:00:40.82ID:CjfZ5YZK
>>224
im-(?:¥d+¥.?¥d*k?g-)?(.*?)(?:-¥d+¥.?¥d*k?g|/)
とか
im-(?:[¥d]+.+?-)?([A-Za-z]+(?:-?[^¥d][A-Za-z]+)*).*/
とか

どっちも微妙なところがあるから用途に合わせて組み合わせるなり最適化するなりしてどうぞ

>>225 本題と関係ないけど:
- 名前パターン x 重量パターンは12種類しかないから全部テストしたほうがいいんじゃ?
- 入力値のバリエーション増やして品質あげたいならHypothesisとか使うといいかも
- elemsという名前で数を渡されるのはちょっと…
2019/11/18(月) 14:28:30.73ID:kC9nbpJq
>>224
(?<=im¥-).*?k?g?(?=¥/)で抜き出して、^[¥d¥.]+k?g¥-|¥-[¥d¥.]+k?g$で削除したら?
231デフォルトの名無しさん
垢版 |
2019/11/19(火) 07:49:22.12ID:XrW2V/V1
あーこれケツのランダム文字列にも/が出てくると破綻するんか。死ね
pat = r''im-(\d.*?k?g?-)?([a-zA-Z-]*)"
pick = re.search(pat,i)
pix = pick[2].rstrip("-")
これでダメかな
2019/11/19(火) 08:32:39.89ID:kFNJ3nbu
なるほ堂
2019/11/19(火) 09:27:15.87ID:iaQaZOOq
.+?\/im-(?:\d+k?g-)?([a-zA-Z-]+)(?:-\d+k?g)?\/.+
で$1でnameだけ取り出せるかな
jsでしか確認してないけど
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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