当スレに★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(超初心者用) その54
https://mevius.5ch.net/test/read.cgi/tech/1623240344/
次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
探検
【まず1嫁】くだすれPython(超初心者用) その55
■ このスレッドは過去ログ倉庫に格納されています
2021/10/01(金) 15:46:47.17ID:9qOHXj6D
773デフォルトの名無しさん
2021/11/20(土) 23:03:09.18ID:W0+y3mk4 まあ、スライスがいい回答だとは思わないけど
小学校の教材ならたぶん0点つけてくる教師がいる回答
小学校の教材ならたぶん0点つけてくる教師がいる回答
774デフォルトの名無しさん
2021/11/21(日) 00:27:58.17ID:QD7EEWWT 構文などの書き方が分からないってなら仕方無いと思うけど
この程度のアルゴリズムを思い付けないってならヤバいだろ
池沼疑われるレベル
この程度のアルゴリズムを思い付けないってならヤバいだろ
池沼疑われるレベル
775デフォルトの名無しさん
2021/11/21(日) 00:38:15.47ID:dCta8OJm アルゴリズムとか使わないから
知能検査は別スレだろ
知能検査は別スレだろ
776デフォルトの名無しさん
2021/11/21(日) 01:16:28.56ID:L8vXU9lo KMP法とかsuffix arrayの話?
777デフォルトの名無しさん
2021/11/21(日) 08:44:34.82ID:1b0LVSEh778デフォルトの名無しさん
2021/11/21(日) 09:58:00.66ID:4YV1JWdz アスペって生き辛そう…
779デフォルトの名無しさん
2021/11/21(日) 11:02:45.04ID:6VEnDrqa def simple_match(str1, str2):
____for idx, _ in enumerate(str1):
________if str1[idx:idx+len(str2)] == str2:
____________return idx
____return -1
____for idx, _ in enumerate(str1):
________if str1[idx:idx+len(str2)] == str2:
____________return idx
____return -1
780デフォルトの名無しさん
2021/11/21(日) 11:15:39.23ID:6VEnDrqa さらに速く高機能にした
def simple_match(str1, str2):
____len_str1 = len(str1)
____len_str2 = len(str2)
____if ret := [idx for idx in range(len_str1) if str1[idx:idx+len_str2]==str2]:
________return ret
____else:
________return -1
simple_match('location', 'cat')
[2]
simple_match('soccer', 'cat')
-1
simple_match('locationcat', 'cat')
[2, 8]
def simple_match(str1, str2):
____len_str1 = len(str1)
____len_str2 = len(str2)
____if ret := [idx for idx in range(len_str1) if str1[idx:idx+len_str2]==str2]:
________return ret
____else:
________return -1
simple_match('location', 'cat')
[2]
simple_match('soccer', 'cat')
-1
simple_match('locationcat', 'cat')
[2, 8]
781デフォルトの名無しさん
2021/11/21(日) 12:37:43.77ID:jllQNQOR __getitem__も__iter__も文字列のメソッドなのでその回答だと0点ですね
782デフォルトの名無しさん
2021/11/21(日) 12:40:01.89ID:jllQNQOR __len__も使ってたか
783デフォルトの名無しさん
2021/11/21(日) 15:17:06.09ID:BLVHorEN 列"B1FD24"は存在しませんになって行のデータが取得できません。
解決策おしえてください。
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=goya user=goya password=goya1395CCC')
c = conn.cursor()
#練習用のテーブル作成
c.execute('''
CREATE TABLE IF NOT EXISTS info_test(
"A_code" text unique,
"weight(g)" integer,
"item_name" text
)
''')
data = [("B1FD24",int(566),"ハンマー"),("B6DE49",None,"空気"),("B4XB21",int(823),"米")]
for d in data:
c.execute(f'INSERT INTO info_test ("A_code","weight(g)","item_name") VALUES(%s,%s,%s) on conflict ("A_code") do nothing',d)
conn.commit()
#練習
c.execute(f'SELECT "A_code" FROM info_test')
a_code_list = [row[0] for row in c.fetchall()]
for a_code in a_code_list:
c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
d = [row for row in c.fetchall()]
print(d)
解決策おしえてください。
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=goya user=goya password=goya1395CCC')
c = conn.cursor()
#練習用のテーブル作成
c.execute('''
CREATE TABLE IF NOT EXISTS info_test(
"A_code" text unique,
"weight(g)" integer,
"item_name" text
)
''')
data = [("B1FD24",int(566),"ハンマー"),("B6DE49",None,"空気"),("B4XB21",int(823),"米")]
for d in data:
c.execute(f'INSERT INTO info_test ("A_code","weight(g)","item_name") VALUES(%s,%s,%s) on conflict ("A_code") do nothing',d)
conn.commit()
#練習
c.execute(f'SELECT "A_code" FROM info_test')
a_code_list = [row[0] for row in c.fetchall()]
for a_code in a_code_list:
c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
d = [row for row in c.fetchall()]
print(d)
784デフォルトの名無しさん
2021/11/21(日) 15:24:19.44ID:BLVHorEN 行データを一行ずつ取得したいのですが、できませんでした。
書き込み時にインデントが消えてしまいましたので再度投下します。
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=goya user=goya password=ksfdkjwoe')
c = conn.cursor()
#練習用のテーブル作成
c.execute('''
CREATE TABLE IF NOT EXISTS info_test(
____"A_code" text unique,
____"weight(g)" integer,
____"item_name" text
)
''')
data = [("B1FD24",int(566),"ハンマー"),("B6DE49",None,"空気"),("B4XB21",int(823),"米")]
for d in data:
____c.execute(f'INSERT INTO info_test ("A_code","weight(g)","item_name") VALUES(%s,%s,%s) on conflict ("A_code") do nothing',d)
conn.commit()
#練習
c.execute(f'SELECT "A_code" FROM info_test')
a_code_list = [row[0] for row in c.fetchall()]
for a_code in a_code_list:
____c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
____d = [row for row in c.fetchall()]
____print(d)
c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
の部分をc.execute(f'SELECT * FROM info_test WHERE "weight(g)"=566')にすると行データを取れるのでどうしていいかわかりません
書き込み時にインデントが消えてしまいましたので再度投下します。
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=goya user=goya password=ksfdkjwoe')
c = conn.cursor()
#練習用のテーブル作成
c.execute('''
CREATE TABLE IF NOT EXISTS info_test(
____"A_code" text unique,
____"weight(g)" integer,
____"item_name" text
)
''')
data = [("B1FD24",int(566),"ハンマー"),("B6DE49",None,"空気"),("B4XB21",int(823),"米")]
for d in data:
____c.execute(f'INSERT INTO info_test ("A_code","weight(g)","item_name") VALUES(%s,%s,%s) on conflict ("A_code") do nothing',d)
conn.commit()
#練習
c.execute(f'SELECT "A_code" FROM info_test')
a_code_list = [row[0] for row in c.fetchall()]
for a_code in a_code_list:
____c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
____d = [row for row in c.fetchall()]
____print(d)
c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
の部分をc.execute(f'SELECT * FROM info_test WHERE "weight(g)"=566')にすると行データを取れるのでどうしていいかわかりません
785デフォルトの名無しさん
2021/11/21(日) 15:36:48.25ID:uiA0IfT6 a_codeを%sにすりゃいいだけちゃう
fと%sの使いどころの問題では
fと%sの使いどころの問題では
786デフォルトの名無しさん
2021/11/21(日) 15:43:34.67ID:BLVHorEN787デフォルトの名無しさん
2021/11/21(日) 16:48:00.01ID:BwaLJwgU >>754
df["count"].astype(long)
df["count"].astype(long)
788デフォルトの名無しさん
2021/11/21(日) 17:07:50.01ID:BwaLJwgU "weight(g)"=None
になってる行があるから
insert に失敗してるんだろ
になってる行があるから
insert に失敗してるんだろ
789デフォルトの名無しさん
2021/11/21(日) 17:18:17.35ID:BLVHorEN >>788
#練習の上の行に下記を入れると表示されるのでinsertは成功してると思います
import pandas as pd
df = pd.read_sql(sql=f'SELECT * FROM info_test;', con=conn)
print(df)
A_code weight(g) item_name
0 B1FD24 566.0 ハンマー
1 B6DE49 NaN 空気
2 B4XB21 823.0 米
#練習の上の行に下記を入れると表示されるのでinsertは成功してると思います
import pandas as pd
df = pd.read_sql(sql=f'SELECT * FROM info_test;', con=conn)
print(df)
A_code weight(g) item_name
0 B1FD24 566.0 ハンマー
1 B6DE49 NaN 空気
2 B4XB21 823.0 米
790デフォルトの名無しさん
2021/11/21(日) 17:53:07.18ID:pk+QZJjo f'SELECT * FROM info_test WHERE "A_code"=\'{a_code}\''
f"SELECT * FROM info_test WHERE \"A_code\"='{a_code}'"
SQL文字列リテラルはSQL標準ではシングルクォート。
f"SELECT * FROM info_test WHERE \"A_code\"='{a_code}'"
SQL文字列リテラルはSQL標準ではシングルクォート。
791デフォルトの名無しさん
2021/11/21(日) 18:18:28.27ID:szj4saah Warning
Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
f-stringも同じこと
Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
f-stringも同じこと
792デフォルトの名無しさん
2021/11/21(日) 18:22:31.92ID:BLVHorEN793デフォルトの名無しさん
2021/11/21(日) 19:25:01.44ID:MSJBJTi1 >>791 をスルーするのが今日の流れっぽい
794デフォルトの名無しさん
2021/11/21(日) 19:40:20.97ID:coVM5S7R 実験や習作だと思うけどprepared statement使うのが筋だし
f-stringで教えるアホは業界去った方がいい
f-stringで教えるアホは業界去った方がいい
795デフォルトの名無しさん
2021/11/21(日) 20:19:01.83ID:BLVHorEN すまん、791はwarningって書いてあったからよくみてなかった。
初心者すぎてよくわからんのですが、f-stringとprepared statementってどっちがどっちですか?
@f"{a}"のやつ
A(%),aのやつ
結果が同じでも処理に違いがある感じですか?
初心者すぎてよくわからんのですが、f-stringとprepared statementってどっちがどっちですか?
@f"{a}"のやつ
A(%),aのやつ
結果が同じでも処理に違いがある感じですか?
796デフォルトの名無しさん
2021/11/21(日) 20:23:30.97ID:BLVHorEN 791google翻訳してみましたが、よくわからん。
警告
変数をSQLクエリ文字列に渡すために、
Python文字列連結(+)または文字列パラメーター補間(%)を使用しないでください。
銃を突きつけても。
(%),aではなくf"{a}"がいいですよってこと?
警告
変数をSQLクエリ文字列に渡すために、
Python文字列連結(+)または文字列パラメーター補間(%)を使用しないでください。
銃を突きつけても。
(%),aではなくf"{a}"がいいですよってこと?
797デフォルトの名無しさん
2021/11/21(日) 20:45:52.97ID:szj4saah798デフォルトの名無しさん
2021/11/21(日) 20:48:25.93ID:BLVHorEN799デフォルトの名無しさん
2021/11/21(日) 21:16:22.28ID:zYUtuXs9 基本、Ruby on Rails などのウェブ開発では、
SQL 文を、文字列で組み立ててはいけない!
ユーザーが危険な文字列を送ってきて、SQL injection しようとするから
必ず、危険な文字列をエラーにするように、
place holder という書き方をしないといけない!
フレームワークを使った、ウェブ開発の基本
SQL 文を、文字列で組み立ててはいけない!
ユーザーが危険な文字列を送ってきて、SQL injection しようとするから
必ず、危険な文字列をエラーにするように、
place holder という書き方をしないといけない!
フレームワークを使った、ウェブ開発の基本
800デフォルトの名無しさん
2021/11/21(日) 21:21:08.30ID:coVM5S7R >>795
@もAもprepared statementではないけどもAが正解
Aでpsycopg2が行っているような処理をRDBMS(PostgreSQL)側で行うのがprepared statements
https://www.psycopg.org/psycopg3/docs/advanced/prepare.html#prepared-statements
psycopg3になれば勝手にやってくれるみたい
@もAもprepared statementではないけどもAが正解
Aでpsycopg2が行っているような処理をRDBMS(PostgreSQL)側で行うのがprepared statements
https://www.psycopg.org/psycopg3/docs/advanced/prepare.html#prepared-statements
psycopg3になれば勝手にやってくれるみたい
801799
2021/11/21(日) 21:44:07.52ID:zYUtuXs9 例えば、Ruby では、
変数a を使って、上の2つのように文字列を連結させたり、
式展開してから埋め込んだりしても、
変数aの内容をユーザーからもらった、危険な文字列の場合、SQL injection される
例えば、WHERE (id = 1 OR 1 = 1)なら、
true となるので、すべてのレコードが取得される!
それを最後のように、place holder, ? を使えば、
危険な文字列をエラーにできる
こういうやり方が、Ruby on Rails などのフレームワークを使った、ウェブ開発の基本
id = '1 OR 1 = 1'
User.where( "id = " + id )
User.where( "id = #{id}" )
User.where( "id = ?", id )
変数a を使って、上の2つのように文字列を連結させたり、
式展開してから埋め込んだりしても、
変数aの内容をユーザーからもらった、危険な文字列の場合、SQL injection される
例えば、WHERE (id = 1 OR 1 = 1)なら、
true となるので、すべてのレコードが取得される!
それを最後のように、place holder, ? を使えば、
危険な文字列をエラーにできる
こういうやり方が、Ruby on Rails などのフレームワークを使った、ウェブ開発の基本
id = '1 OR 1 = 1'
User.where( "id = " + id )
User.where( "id = #{id}" )
User.where( "id = ?", id )
802デフォルトの名無しさん
2021/11/21(日) 21:46:31.38ID:BLVHorEN 調べてきたけど、プレースホルダーを使わないと攻撃されたとき危険ってのがわかったわ。
ちなみに↓をf''使わずに(%)をつかって書くとどうなるんや?
f'SELECT * FROM info_test WHERE "A_code"=\'{a_code}\''
ちなみに↓をf''使わずに(%)をつかって書くとどうなるんや?
f'SELECT * FROM info_test WHERE "A_code"=\'{a_code}\''
804デフォルトの名無しさん
2021/11/21(日) 21:48:35.16ID:6VEnDrqa で、結局どう書くのがベストなの? こう?
c.execute("SELECT * FROM info_test WHERE A_code=%s", (a_code,))
テーブル作成とかの"A_code"って、ダブルクォーテーションいらないんじゃない?
ttps://www.curict.com/item/20/20f70b7.html
とか見るとダブルクォーテーションで囲ってないよね
c.execute("SELECT * FROM info_test WHERE A_code=%s", (a_code,))
テーブル作成とかの"A_code"って、ダブルクォーテーションいらないんじゃない?
ttps://www.curict.com/item/20/20f70b7.html
とか見るとダブルクォーテーションで囲ってないよね
805デフォルトの名無しさん
2021/11/21(日) 21:51:23.16ID:BLVHorEN 大文字の時は括らなきゃいけないのかと思ってたわ
806デフォルトの名無しさん
2021/11/21(日) 22:20:00.67ID:EfkKXMOb > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
ゲリ便をじゅるじゅると
うまそうに食ってるw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
ゲリ便をじゅるじゅると
うまそうに食ってるw
807デフォルトの名無しさん
2021/11/21(日) 22:30:00.92ID:nzk7IXVa808デフォルトの名無しさん
2021/11/21(日) 23:10:08.06ID:i/lteX3h809デフォルトの名無しさん
2021/11/22(月) 16:55:05.56ID:axkd8Lua810デフォルトの名無しさん
2021/11/23(火) 12:20:48.24ID:HWlCU4L+ 3.10に変えたらscikit-learnがインストール出来なくなった
まあそう頻繁に使うライブラリでもないけど
まあそう頻繁に使うライブラリでもないけど
811デフォルトの名無しさん
2021/11/23(火) 19:50:40.69 assertの使いどころがぐぐってみましたがいまいちピンと来ません
812デフォルトの名無しさん
2021/11/23(火) 20:09:45.21ID:HurF++pM813デフォルトの名無しさん
2021/11/23(火) 20:42:03.75ID:mB/cMOfZ あくまで開発中の考慮漏れなんかを防ぐ用途なので
ランタイムエラーにしたいならassertの出番ではない
ランタイムエラーにしたいならassertの出番ではない
814デフォルトの名無しさん
2021/11/23(火) 22:55:20.18ID:bS29UIDJ815デフォルトの名無しさん
2021/11/23(火) 22:55:45.59ID:xEN2JBOU var : Optional[str] =None
on_btn():
__assert var
__var処理
みたいな。pylanceとかに怒られない
varにモノ入ってっからbtnが押されるに決まってんだろうがっていうとき
on_btn():
__if not var:
____return
__else:
____var処理
て書くのがバカらしいので
on_btn():
__assert var
__var処理
みたいな。pylanceとかに怒られない
varにモノ入ってっからbtnが押されるに決まってんだろうがっていうとき
on_btn():
__if not var:
____return
__else:
____var処理
て書くのがバカらしいので
816デフォルトの名無しさん
2021/11/24(水) 03:25:37.66ID:Q5JPayEq >>812
絶対壊れる未来しか観えない
絶対壊れる未来しか観えない
817デフォルトの名無しさん
2021/11/24(水) 03:27:08.47ID:Q5JPayEq818デフォルトの名無しさん
2021/11/24(水) 08:02:23.61ID:jO3RIx+f 1000行のプログラムって初心者からすると途方もない規模のプログラムに感じるけど、慣れた人からすると当たり前な規模なのかな
819デフォルトの名無しさん
2021/11/24(水) 10:22:49.14ID:9k7x+oD0 一本の文脈でプログラム書こうとすると人間は必ずワーキングメモリの限界がくるから、そんなもんだよ
自分の場合、そうやって場当たり的に書けるのは1000行くらいが限界だな
大きなプログラムを書くには、プログラムというものをトップダウンに考えて、モジュールや関数に適宜分割していくことが必要
そうすることで枝葉の細かい部分を忘れてワーキングメモリを節約できる
特にPythonの場合はJupyter使って勉強する人が多いから、プログラムの分割が身に着きにくいんだよ
自分の場合、そうやって場当たり的に書けるのは1000行くらいが限界だな
大きなプログラムを書くには、プログラムというものをトップダウンに考えて、モジュールや関数に適宜分割していくことが必要
そうすることで枝葉の細かい部分を忘れてワーキングメモリを節約できる
特にPythonの場合はJupyter使って勉強する人が多いから、プログラムの分割が身に着きにくいんだよ
820デフォルトの名無しさん
2021/11/24(水) 10:39:50.61ID:kXzWnsgO821デフォルトの名無しさん
2021/11/24(水) 10:42:31.59ID:kXzWnsgO >819
Jupyterは慣れた人が楽するためには良いけど
あれで勉強するのは限界もあるな
Jupyterが悪いとは言ってない
あれがPython世界の全てだと勘違い認識しないようにするのが大事
Jupyterは慣れた人が楽するためには良いけど
あれで勉強するのは限界もあるな
Jupyterが悪いとは言ってない
あれがPython世界の全てだと勘違い認識しないようにするのが大事
822デフォルトの名無しさん
2021/11/24(水) 11:34:24.45ID:q9kQZP30 Jupyterなんか、ここ5年くらいてpythonはいった人の一部がつかってるだけで、python流行り出した2005年頃から利用してるpython使ってる組み合わせは今もあまり使ってないでしょ。
823デフォルトの名無しさん
2021/11/24(水) 16:15:21.36ID:uoHN98GH 今日中にあるサイトのスクレイピングコードを書かないといけなくなりました
しかしスクレイピングはしたことがありません
どのように書くのがいいのでしょうか?
恐らくpostであろうformっぽい部分にデータを入れて検索すると色々と表示される感じです
djangoだろうと思います
インプット・アウトプットが特にイメージできません
しかしスクレイピングはしたことがありません
どのように書くのがいいのでしょうか?
恐らくpostであろうformっぽい部分にデータを入れて検索すると色々と表示される感じです
djangoだろうと思います
インプット・アウトプットが特にイメージできません
824デフォルトの名無しさん
2021/11/24(水) 16:59:36.29ID:SENfXVh3 今日中には無理だから期限延ばしてもらうしかないね
825デフォルトの名無しさん
2021/11/24(水) 17:33:42.69 まぁresponseがjsonなのかhtmlなのかによるけど
後者ならbeautifulsoup4(他にもあるけど安定してるのはなんだかんだでbs4)
スクレイピングはrequestsとbs4だけでどうにかなることが大半
なんのデータを扱うかによるが時系列やら行列計算するならならpandas,numpyも必須
データベースに出力と言うなら、djangoで何使われているかは知らんが
sqlite3のORMのsqlalchemyで事足りることが大半
レスから察するにインプットは、
forms.pyだかview.pyだかに
クエリかリクエストボディ(get/post)受け取る部分書いて
スクレイピングするコードをclass Command(BaseCommand):形式で書いて
適当に名前つけてpyファイルにして
management>commandsディレクトリに放り込んで終い。
で、view.pyで受け取ったパラメータをそのCommandに投げて
結果をtemplatesに渡して表示する感じじゃなかたっけ
後者ならbeautifulsoup4(他にもあるけど安定してるのはなんだかんだでbs4)
スクレイピングはrequestsとbs4だけでどうにかなることが大半
なんのデータを扱うかによるが時系列やら行列計算するならならpandas,numpyも必須
データベースに出力と言うなら、djangoで何使われているかは知らんが
sqlite3のORMのsqlalchemyで事足りることが大半
レスから察するにインプットは、
forms.pyだかview.pyだかに
クエリかリクエストボディ(get/post)受け取る部分書いて
スクレイピングするコードをclass Command(BaseCommand):形式で書いて
適当に名前つけてpyファイルにして
management>commandsディレクトリに放り込んで終い。
で、view.pyで受け取ったパラメータをそのCommandに投げて
結果をtemplatesに渡して表示する感じじゃなかたっけ
826デフォルトの名無しさん
2021/11/24(水) 17:40:18.98 >management>commandsディレクトリに放り込んで終い。
コマンド使わないなら↑これは必要なかったわ
全部 views.pyに書いても分けても好きにしたらいいと思う
コマンド使わないなら↑これは必要なかったわ
全部 views.pyに書いても分けても好きにしたらいいと思う
827デフォルトの名無しさん
2021/11/24(水) 19:16:52.56ID:xsp2scS+ ぼくも3ヶ月くらい前からスクレイピングの勉強始めてようやくほしいデータを物怖じせず取れるようになりましたが、自分はseleniumとlxmlに落ち着きました。
requestsだとうまく取れないページがあったり、scrapyだと非同期処理?で爆速過ぎてサイトから速攻banされたりしました
サイトによってはpyppeteerやseleniumじゃないととりづらいとこもあるのでselenium+beautifulsoup or lxmlをおすすめしたい
requestsだとうまく取れないページがあったり、scrapyだと非同期処理?で爆速過ぎてサイトから速攻banされたりしました
サイトによってはpyppeteerやseleniumじゃないととりづらいとこもあるのでselenium+beautifulsoup or lxmlをおすすめしたい
828デフォルトの名無しさん
2021/11/24(水) 20:53:24.72ID:ldCMVu13 私はrequestsとseleniumと正規表現ですね
829デフォルトの名無しさん
2021/11/25(木) 01:42:23.64ID:nh0ZEMSE Ruby では、Nokogiri, Selenium WebDriver, Capybara
Nokogiriには、wait が無いから、
5ch みたいに、空のHTML を送ってきてから、
Ajax でページ内容を取得するようなサイトでは、要素が取れないかも
要素が出現するまで確実に待つには、Seleniumを使う
Nokogiriには、wait が無いから、
5ch みたいに、空のHTML を送ってきてから、
Ajax でページ内容を取得するようなサイトでは、要素が取れないかも
要素が出現するまで確実に待つには、Seleniumを使う
830デフォルトの名無しさん
2021/11/25(木) 02:33:04.16ID:Xt1TOEJK NokogiriがインストールできないってQiitaではクッソほど量産された記事ですよね
ガイジ言語には本当にお似合いだと思った
ガイジ言語には本当にお似合いだと思った
831デフォルトの名無しさん
2021/11/25(木) 05:20:37.28ID:xhC4D+V9 確率がpの宝くじを当たるまで引いて、当たるのにかかった回数を記録。それをn回繰り返し(100万回とか)、最後はそれをpyplotでヒストグラムにしようとしています
回数を記録する配列はndarrayで作り、そこにnp.concatenateで回数を追記していったのですが、どうもこれが処理が重いのか時間がものすごくかかる…
サイズが100万の配列を作る以外に思いつかないのだけど、このやり方は良くないのでしょうか?
回数を記録する配列はndarrayで作り、そこにnp.concatenateで回数を追記していったのですが、どうもこれが処理が重いのか時間がものすごくかかる…
サイズが100万の配列を作る以外に思いつかないのだけど、このやり方は良くないのでしょうか?
832デフォルトの名無しさん
2021/11/25(木) 07:58:41.89ID:ysfwc6h6 ndarrayは固定配列。だから、appendなどサイズを変更する処理は考えなしにしてはいけない。
833デフォルトの名無しさん
2021/11/25(木) 09:32:49.11ID:1DZpA8jw 例えばM回引いてk回当たったとするじゃん?
するとk回の「当たるまで引いた」データが取れるわけだから、律儀に「当たるまで引く」をn回繰り返す必要はない
するとk回の「当たるまで引いた」データが取れるわけだから、律儀に「当たるまで引く」をn回繰り返す必要はない
834デフォルトの名無しさん
2021/11/25(木) 09:43:35.46ID:hXWvHSdH 擬似乱数だろうからシードをどう考えるかだな
835デフォルトの名無しさん
2021/11/25(木) 09:44:51.66ID:r5Heuy4P concat は無駄が多いので
予め最大の大きさが判ってるならその大きさで確保しておくとか
最大が判らないなら concat せずに list で繋ぐ方が速い
予め最大の大きさが判ってるならその大きさで確保しておくとか
最大が判らないなら concat せずに list で繋ぐ方が速い
836デフォルトの名無しさん
2021/11/25(木) 10:37:40.50ID:D93Sr9qt Counterとかで保持したほうがいいんじゃねーの(ハナホジ)
837デフォルトの名無しさん
2021/11/25(木) 10:42:23.98ID:jB6AdxeI ヒストグラムの範囲毎に予め変数作って当たりが出る度に直接そこに+1してカウントして行けば
100万個の「当たるのにかかった回数」を全て保持する必要が無いと思うが
何か他にデータ残したい理由があるの?
100万個の「当たるのにかかった回数」を全て保持する必要が無いと思うが
何か他にデータ残したい理由があるの?
838デフォルトの名無しさん
2021/11/25(木) 12:47:25.27ID:+wzV+gbn 確率の収束をマジで計算しちゃうと何したって遅いよ
0.01%当たるまで を100万回
リストに数字appendするの100万回
それぞれやってみたらいい
後者は1秒とかでしょう
前者は1万回試行のレベルでも1分くらいかかるべ
0.01%当たるまで を100万回
リストに数字appendするの100万回
それぞれやってみたらいい
後者は1秒とかでしょう
前者は1万回試行のレベルでも1分くらいかかるべ
839デフォルトの名無しさん
2021/11/25(木) 13:40:02.87ID:bDvmxdn9 最近ピストグラム流行ってるな
840デフォルトの名無しさん
2021/11/25(木) 15:31:05.54ID:fS0drys5 確率はscipy.stats.berniulli.rvs(p)で求めてたけど、確かにこれを100万回繰り返すのに時間かかってますね…
リストにappendは100万回でも一瞬でした
しかし、これ以外で確率求める関数なさそうだし困ったな…
ありがとうございました
リストにappendは100万回でも一瞬でした
しかし、これ以外で確率求める関数なさそうだし困ったな…
ありがとうございました
841デフォルトの名無しさん
2021/11/25(木) 19:42:57.03ID:37B47xca pythonで生成したhtml文字列を、
一時ファイルを経由せず直接ブラウザに渡す方法ある?
webbrowserモジュールではURIしか渡せないようなので
一時ファイルを経由せず直接ブラウザに渡す方法ある?
webbrowserモジュールではURIしか渡せないようなので
842デフォルトの名無しさん
2021/11/25(木) 19:53:24.24ID:mqEOsm/5 >>840
先に固定長確保すればさらに速いよ
先に固定長確保すればさらに速いよ
843デフォルトの名無しさん
2021/11/25(木) 19:54:52.38ID:0uwmxbI7844デフォルトの名無しさん
2021/11/25(木) 20:21:07.43ID:0YPlXaMU >>842
l = [0] *1000000
for i in range(1000000):
__l[i] = i
l = []
for i in range(1000000):
__l.append(i)
誤差じゃね?
l = [0] *1000000
for i in range(1000000):
__l[i] = i
l = []
for i in range(1000000):
__l.append(i)
誤差じゃね?
845デフォルトの名無しさん
2021/11/25(木) 21:11:00.95ID:yEJnYkB5 文字列に/dとxと.とcm以外の文字が含まれている場合にエラーが発生するように死体です。
moziretu_list = ["36.4x27.5x18.8cm","風量調整なし","36.4x27.5x18.8cm","Size:140型(14x14cm);Color:【No.01】2枚セット"]
for moziretu in moziretu_list:
____try:
________print(moziretu)
________#moziretuに/dとxと.とcm以外の文字が含まれている場合にエラー
________if re.search(r"正規表現の書き方がよくわからないです",moziretu):
____________raise ValueError
________print("必要な文字列の取得に成功しました")
____except:
________print("文字列に/dとxと.とcm以外の文字が含まれています")
moziretu_listの2つめと4つめの要素の時にエラーが発生するようにしたいのですが、
正規表現の書き方がよくわからないです
moziretu_list = ["36.4x27.5x18.8cm","風量調整なし","36.4x27.5x18.8cm","Size:140型(14x14cm);Color:【No.01】2枚セット"]
for moziretu in moziretu_list:
____try:
________print(moziretu)
________#moziretuに/dとxと.とcm以外の文字が含まれている場合にエラー
________if re.search(r"正規表現の書き方がよくわからないです",moziretu):
____________raise ValueError
________print("必要な文字列の取得に成功しました")
____except:
________print("文字列に/dとxと.とcm以外の文字が含まれています")
moziretu_listの2つめと4つめの要素の時にエラーが発生するようにしたいのですが、
正規表現の書き方がよくわからないです
846デフォルトの名無しさん
2021/11/25(木) 21:26:14.65ID:rnpiht7q847デフォルトの名無しさん
2021/11/25(木) 21:43:53.79ID:fTQ24d4a re.match('^([x.\d]|cm)+$',
848デフォルトの名無しさん
2021/11/25(木) 21:58:41.55ID:yEJnYkB5 >>847
だと4つめの"Size:140型(14x14cm);Color:【No.01】2枚セット"がとれてしまいます。
だと4つめの"Size:140型(14x14cm);Color:【No.01】2枚セット"がとれてしまいます。
849デフォルトの名無しさん
2021/11/25(木) 22:03:38.00ID:yEJnYkB5 すみません。matchからsearchにしたら行けました!!
850デフォルトの名無しさん
2021/11/25(木) 23:05:36.84ID:37B47xca >>843,841
レスサンクス
鯖を使わず直接やりたかったので、data URIでやってみた
プレーンのままだと、改行処理とか面倒くさいので、
base64でエンコードしてやってみたらうまくいった
ただ、webbrowserモジュールを使うとWindows OSがこのプロトコルで開くことを許可しないので、
subprocess.Popenを使ってブラウザ指定(Firefox)
そしたら、ブラウザ自体もこのプロトコルで開くことがデフォルトではできないので
設定を変更して、なんとか一時ファイル経由と同じ状態で開くことができた
文字化けさせないようにするのがけっこう大変だった
ただ、ブラウザの設定をいじってまで直接やりとりに拘る必要もないのかなとも思ったよ
レスサンクス
鯖を使わず直接やりたかったので、data URIでやってみた
プレーンのままだと、改行処理とか面倒くさいので、
base64でエンコードしてやってみたらうまくいった
ただ、webbrowserモジュールを使うとWindows OSがこのプロトコルで開くことを許可しないので、
subprocess.Popenを使ってブラウザ指定(Firefox)
そしたら、ブラウザ自体もこのプロトコルで開くことがデフォルトではできないので
設定を変更して、なんとか一時ファイル経由と同じ状態で開くことができた
文字化けさせないようにするのがけっこう大変だった
ただ、ブラウザの設定をいじってまで直接やりとりに拘る必要もないのかなとも思ったよ
851デフォルトの名無しさん
2021/11/25(木) 23:06:38.41ID:37B47xca852デフォルトの名無しさん
2021/11/26(金) 00:31:18.70ID:o6j9/HV6853デフォルトの名無しさん
2021/11/26(金) 02:22:22.94ID:IsarZHns 細かいけど並列計算で最後に結合するのってちゃんどi.i.d.になるんかな?
854デフォルトの名無しさん
2021/11/26(金) 03:43:17.12ID:o6j9/HV6 乱数のタネを乱数にしてペッ別に始めればばiid
どっちにしても疑似乱数を使うとiidは崩れる
「疑似」だけに
問題はそこまで厳密性を求めるかどうか
どっちにしても疑似乱数を使うとiidは崩れる
「疑似」だけに
問題はそこまで厳密性を求めるかどうか
855デフォルトの名無しさん
2021/11/26(金) 11:18:00.20ID:JcLIlhiK 文章が崩れてるどw
意味は分かるけど
意味は分かるけど
856デフォルトの名無しさん
2021/11/26(金) 11:34:14.13ID:TzeTaFZ5 シードを乱数にしたら重複する可能性あるから
UUID的なやつか同時実行しない前提で時刻から生成しないと
UUID的なやつか同時実行しない前提で時刻から生成しないと
857デフォルトの名無しさん
2021/11/26(金) 19:52:15.77ID:o6j9/HV6858デフォルトの名無しさん
2021/11/27(土) 15:05:57.62ID:x+qkOb0S classて使ったほうがいいんですか?
859デフォルトの名無しさん
2021/11/27(土) 16:00:53.09ID:Ys/oz9Wu intもlistもclassだから使わずにPythonプログラム書けるならやってみろ
860デフォルトの名無しさん
2021/11/27(土) 23:41:50.77ID:x+qkOb0S 自分でclassを作ると何が嬉しいんですか?
861デフォルトの名無しさん
2021/11/28(日) 00:22:44.41ID:UCS6EEgA プログラムが大きくなったとき
管理しやすくなる
再利用もしやすくなる
ちゃんとclassを設計すればだが
管理しやすくなる
再利用もしやすくなる
ちゃんとclassを設計すればだが
862デフォルトの名無しさん
2021/11/28(日) 01:00:32.66ID:5wT8eQUv >>861
サンクス(´・ω・`)
サンクス(´・ω・`)
863デフォルトの名無しさん
2021/11/28(日) 01:31:06.42ID:YY1hk1pY >>862
似たようなメソッドで機能が違うもの作るとき
少し出すだけで作れるとか
敵と自機をキャラというクラスに持たせて
画面表示や移動という共通部分は一度に設定できてそうじゃない部分を
簡単に分けられる
んで全体的少しずつ変えたい時に
一箇所変えれば両方変えられる
みたいな
似たようなメソッドで機能が違うもの作るとき
少し出すだけで作れるとか
敵と自機をキャラというクラスに持たせて
画面表示や移動という共通部分は一度に設定できてそうじゃない部分を
簡単に分けられる
んで全体的少しずつ変えたい時に
一箇所変えれば両方変えられる
みたいな
864デフォルトの名無しさん
2021/11/28(日) 07:21:31.61ID:nfhtQiKt my_literal_eval(str):
__try
____return ast.literal_eval(str)
__except SyntaxError:
____return str
samples = my_literal_eval(str) #辞書
samples.keys()
としたときに、型チェッカーがkeys()あるかわがんね!!って怒るんですが
どこで辞書型の宣言をしたらいいですか?
__try
____return ast.literal_eval(str)
__except SyntaxError:
____return str
samples = my_literal_eval(str) #辞書
samples.keys()
としたときに、型チェッカーがkeys()あるかわがんね!!って怒るんですが
どこで辞書型の宣言をしたらいいですか?
865デフォルトの名無しさん
2021/11/28(日) 08:44:01.49ID:ieKXg54N isinstance(dict, samples)でガードすれば通るんでないか
866デフォルトの名無しさん
2021/11/28(日) 08:46:26.48ID:TS21VHmH867デフォルトの名無しさん
2021/11/28(日) 08:51:01.10ID:Ll5PsJvS 関数間で状態を保持したいときだけクラスを使えばいい
868デフォルトの名無しさん
2021/11/28(日) 09:34:35.03ID:/NNHm8tx 令和のstaticおじさん現る
869デフォルトの名無しさん
2021/11/28(日) 12:45:20.85ID:nfhtQiKt >>865
assert isinstance(samples,dict)
samples.keys()
いけました。多謝
ところで
assert type(samples) == dict
は型チェッカー通らなかったんだけど、なぜですか?継承的な理由?
assert isinstance(samples,dict)
samples.keys()
いけました。多謝
ところで
assert type(samples) == dict
は型チェッカー通らなかったんだけど、なぜですか?継承的な理由?
870デフォルトの名無しさん
2021/11/28(日) 14:02:56.10ID:/OsOh/FW windowsで
python_ide.exe /run sample01.py
ってやるとIDE起動しつついきなり実行して結果を表示して
そのあとから編集なりデバッグなりが出来るIDEかエディタってありますか
いちいちプロジェクト作ってF5押してとかやらずにできるものがいいです
python_ide.exe /run sample01.py
ってやるとIDE起動しつついきなり実行して結果を表示して
そのあとから編集なりデバッグなりが出来るIDEかエディタってありますか
いちいちプロジェクト作ってF5押してとかやらずにできるものがいいです
871デフォルトの名無しさん
2021/11/28(日) 16:14:11.68ID:UCS6EEgA >>870
google colaboratory か?
google colaboratory か?
872デフォルトの名無しさん
2021/11/28(日) 23:04:03.88ID:SJI7MgMY 漏れは、デスクトップにショートカットを作って、
WSL2, Ubuntu-18.04 を起動して、
VSCode で、その中のproj01 プロジェクトを開く
リンク先
C:\Windows\System32\wsl.exe code .
作業フォルダ
\\wsl$\Ubuntu-18.04\home\ユーザー名\proj01
これを応用して、VSCode に「ruby a.rb」とか、
実行したいプログラム・スクリプトファイル名を、引数として渡せるかも知れない
漏れは知らないけど
WSL2, Ubuntu-18.04 を起動して、
VSCode で、その中のproj01 プロジェクトを開く
リンク先
C:\Windows\System32\wsl.exe code .
作業フォルダ
\\wsl$\Ubuntu-18.04\home\ユーザー名\proj01
これを応用して、VSCode に「ruby a.rb」とか、
実行したいプログラム・スクリプトファイル名を、引数として渡せるかも知れない
漏れは知らないけど
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 空自機レーダー照射、音声データ公開 中国 ★2 [蚤の市★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★3 [597533159]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- ド・ド・ドリフのwwwwwwwww
- オーストラリアで16歳未満はSNS禁止になったらしいけどこれ
- スバルが言ったらノエルが濡れそうなこと
