Pythonオフィシャルサイト
http://www.python.org/
テンプレ等は2以降で
■前スレ
Pythonのお勉強 Part53
http://mevius.2ch.net/test/read.cgi/tech/1494683284/
Pythonのお勉強 Part54 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/09/01(金) 16:44:47.30ID:igIE9hK/607605
2017/11/23(木) 18:50:50.08ID:Gsw8xDzr >>606
マジか!!
マジか!!
608デフォルトの名無しさん
2017/11/23(木) 19:00:56.02ID:A7IWH6W8 >>604
全部一気に読みこむと改行て消えるんか?
全部一気に読みこむと改行て消えるんか?
609デフォルトの名無しさん
2017/11/23(木) 19:49:19.59ID:DyM7pS8r >>603
json, pickle, sqlite3好きなの選べ
json, pickle, sqlite3好きなの選べ
610デフォルトの名無しさん
2017/11/23(木) 20:13:58.63ID:EP8I35kw ●●●宇宙の外側に何があるのか?●●●
http://jbbs.livedoor.jp/bbs/read.cgi/stud▲y/3729/1069922074/84-87
この掲示板(万▲有サロン)に優秀な書き▲込みをして、総額148万円の賞金をゲットしよう!(*^^)v
http://jbbs.livedoor.jp/stu▲dy/3729/ →リンクが不良なら、検▲索窓に入れる!
http://jbbs.livedoor.jp/bbs/read.cgi/stud▲y/3729/1069922074/84-87
この掲示板(万▲有サロン)に優秀な書き▲込みをして、総額148万円の賞金をゲットしよう!(*^^)v
http://jbbs.livedoor.jp/stu▲dy/3729/ →リンクが不良なら、検▲索窓に入れる!
611デフォルトの名無しさん
2017/11/23(木) 20:42:54.38ID:V6s4lnHY612デフォルトの名無しさん
2017/11/23(木) 20:56:22.29ID:haiMWBI7 pandas使えば一発で解決するな
613デフォルトの名無しさん
2017/11/23(木) 21:11:52.18ID:3u99Ww5l614デフォルトの名無しさん
2017/11/23(木) 21:15:48.96ID:AE4DGBUv なんでわざわざライブラリあるのに自分で書こうと思うのか分からん
615デフォルトの名無しさん
2017/11/23(木) 21:24:21.79ID:dN4AoUwX 596です
ありがとうございます
ありがとうございます
616デフォルトの名無しさん
2017/11/24(金) 02:28:11.33ID:4BpIkKm4 お前らよりも、ずっと神 https://www.youtube.com/user/sentdex/featured
617デフォルトの名無しさん
2017/11/24(金) 02:28:27.65ID:4BpIkKm4 お前らよりも、ずっと神 https://www.youtube.com/user/sentdex/featured
618デフォルトの名無しさん
2017/11/24(金) 10:34:27.08ID:W4G6A7kr >>603
>>> csv_raw_data = """hoge,1,10,fuga
apple,2,20,pineapple
strawberry,3,30,mango"""
>>>
>>> print(csv_raw_data)
hoge,1,10,fuga
apple,2,20,pineapple
strawberry,3,30,mango
>>>
>>> csv_data = [[int(col) if col.isdigit() else col for col in row.split(',')] for row in csv_raw_data.split('\n')] #数字の文字列はintに変換して2次元リスト化
>>> csv_data
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> [row[1] for row in csv_data] #2列目のデータ抜き出し
[1, 2, 3]
>>>
>>> new_col_1 = [111,112,113] #2列目のNEWデータ
>>> new_csv_data = [[new_col_1[row_idx] if col_idx==1 else col_data for col_idx, col_data in enumerate(row_data)] for row_idx, row_data in enumerate(csv_data)]
>>> new_csv_data
[['hoge', 111, 10, 'fuga'], ['apple', 112, 20, 'pineapple'], ['strawberry', 113, 30, 'mango']]
>>>
>>> new_csv_raw_data = '\n'.join([','.join([str(col) for col in row]) for row in new_csv_data]) #intはstrに変換して文字列化
>>> print(new_csv_raw_data)
hoge,111,10,fuga
apple,112,20,pineapple
strawberry,113,30,mango
>>>
>>> csv_raw_data = """hoge,1,10,fuga
apple,2,20,pineapple
strawberry,3,30,mango"""
>>>
>>> print(csv_raw_data)
hoge,1,10,fuga
apple,2,20,pineapple
strawberry,3,30,mango
>>>
>>> csv_data = [[int(col) if col.isdigit() else col for col in row.split(',')] for row in csv_raw_data.split('\n')] #数字の文字列はintに変換して2次元リスト化
>>> csv_data
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> [row[1] for row in csv_data] #2列目のデータ抜き出し
[1, 2, 3]
>>>
>>> new_col_1 = [111,112,113] #2列目のNEWデータ
>>> new_csv_data = [[new_col_1[row_idx] if col_idx==1 else col_data for col_idx, col_data in enumerate(row_data)] for row_idx, row_data in enumerate(csv_data)]
>>> new_csv_data
[['hoge', 111, 10, 'fuga'], ['apple', 112, 20, 'pineapple'], ['strawberry', 113, 30, 'mango']]
>>>
>>> new_csv_raw_data = '\n'.join([','.join([str(col) for col in row]) for row in new_csv_data]) #intはstrに変換して文字列化
>>> print(new_csv_raw_data)
hoge,111,10,fuga
apple,112,20,pineapple
strawberry,113,30,mango
>>>
619デフォルトの名無しさん
2017/11/24(金) 11:33:00.39ID:W4G6A7kr >>609がすすめるjsonは癖があるし、pickleはバイナリデータだからdumpしないと読めないし編集できないし
sqlite3はしらんけども・・、csvのデータを扱うなら>>613の言うようにcsvモジュール使うのがベストだと思う
しかし、>>603の質問を考察するに特殊なcsvを扱うわけではなく
自分で作った2次元リストの保存にcsvにするというだけなのだから>>618でいいと思う(csvモジュール勉強するのめんどいじゃん)
さらに>>618は自由にカスタマイズ可能、例えば各列の先頭をそろえるためにスペースを入れるとかなんとか
うーん、>>618がベストアンサーであると確定してしまったね
sqlite3はしらんけども・・、csvのデータを扱うなら>>613の言うようにcsvモジュール使うのがベストだと思う
しかし、>>603の質問を考察するに特殊なcsvを扱うわけではなく
自分で作った2次元リストの保存にcsvにするというだけなのだから>>618でいいと思う(csvモジュール勉強するのめんどいじゃん)
さらに>>618は自由にカスタマイズ可能、例えば各列の先頭をそろえるためにスペースを入れるとかなんとか
うーん、>>618がベストアンサーであると確定してしまったね
620デフォルトの名無しさん
2017/11/24(金) 11:38:11.01ID:GsVE4oKd strにカンマとタブとスペースと空文字と空白と改行が以下略
621デフォルトの名無しさん
2017/11/24(金) 11:45:22.75ID:GsVE4oKd まず手で編集する気があるのかを訪ねるべきだった
622デフォルトの名無しさん
2017/11/24(金) 11:51:38.02ID:GsVE4oKd 次に値域を尋ねるべきだった
フォーマットについて話すのはそれからで良かった
フォーマットについて話すのはそれからで良かった
623デフォルトの名無しさん
2017/11/24(金) 12:38:53.37ID:lepqzR4M jsonそんなに癖あるかな
624デフォルトの名無しさん
2017/11/24(金) 12:42:09.24ID:znYgKojB (自分が)使えない事を世間では「クセがある」と言うんやで
覚えとき
覚えとき
625デフォルトの名無しさん
2017/11/24(金) 12:46:05.01ID:JwzuLRFp csvモジュールの使い方覚えるのさえ面倒くさがる雑魚がpython、、、
626デフォルトの名無しさん
2017/11/24(金) 13:33:05.64ID:gyq0zbJn 雑魚にも難しいことができるように言語は進歩してきた
もっと雑魚の言い分に耳を傾けろおら
もっと雑魚の言い分に耳を傾けろおら
627デフォルトの名無しさん
2017/11/24(金) 14:40:46.80ID:W4G6A7kr >>603
おいっ! すごい方法を思いついちまった、天才かもしれん
2次元リストをstr()で文字列化して、それをファイルに保存
データを復元するときは、exec("value_name " + "=" + "ファイルから読み込んだ文字列”)
>>> data = [['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> import re
>>> save_data = re.sub(r'(\],)','],\n', str(data)) #ファイル直接見た時に見やすいように改行挿入
>>> print(save_data)
[['hoge', 1, 10, 'fuga'],
['apple', 2, 20, 'pineapple'],
['strawberry', 3, 30, 'mango']]
>>>
>>> exec("value_name" + "=" + save_data)
>>> print(value_name)
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
おいっ! すごい方法を思いついちまった、天才かもしれん
2次元リストをstr()で文字列化して、それをファイルに保存
データを復元するときは、exec("value_name " + "=" + "ファイルから読み込んだ文字列”)
>>> data = [['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> import re
>>> save_data = re.sub(r'(\],)','],\n', str(data)) #ファイル直接見た時に見やすいように改行挿入
>>> print(save_data)
[['hoge', 1, 10, 'fuga'],
['apple', 2, 20, 'pineapple'],
['strawberry', 3, 30, 'mango']]
>>>
>>> exec("value_name" + "=" + save_data)
>>> print(value_name)
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
628デフォルトの名無しさん
2017/11/24(金) 14:57:34.18ID:W4G6A7kr execよりevalの方がいいわ安全だし
>>> value_name = eval(save_data)
>>> print(value_name)
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> value_name = eval(save_data)
>>> print(value_name)
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
629デフォルトの名無しさん
2017/11/24(金) 16:54:50.41ID:gjW1rQ8R どんな言語を使ってプログラムできても所詮俺たちはコピペ職人に過ぎない
630デフォルトの名無しさん
2017/11/24(金) 18:45:37.50ID:FT0GxPR+ そう卑下するな
コピペでも職人の域に逹してるなら大したもんだ
コピペでも職人の域に逹してるなら大したもんだ
631603
2017/11/24(金) 20:40:44.33ID:SOBToF3l たくさんレスありがとさんです
pickleとかpandasとか知らなかったので大変勉強になりました。今回はファイルを直接編集する道も残しておきたかったのでcsvにしました。リードもライトもfor文がなくなってすっきりしましたw
pickleとかpandasとか知らなかったので大変勉強になりました。今回はファイルを直接編集する道も残しておきたかったのでcsvにしました。リードもライトもfor文がなくなってすっきりしましたw
632デフォルトの名無しさん
2017/11/24(金) 21:23:09.23ID:t572wEhv Pythonは貴方にとって何?
1. 飯の種
2. 仕事の道具
3. 趣味のツール
4. 楽しいおもちゃ
1. 飯の種
2. 仕事の道具
3. 趣味のツール
4. 楽しいおもちゃ
633デフォルトの名無しさん
2017/11/24(金) 21:35:38.52ID:r4TUJvjC 趣味のおもちゃ
634デフォルトの名無しさん
2017/11/24(金) 21:53:56.64ID:W4G6A7kr >>631
csvモジュール使ってみたけどコレなかなか良いよ
数字の文字列を自動でintに変換してくれるようなことはしてくれないみたいだけど、なかなか良いよ
>>> import csv
>>> csv_data = [['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> with open('csv_test.csv', 'w', newline='') as csvfile:
s = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
s.writerows(csv_data)
>>> with open('csv_test.csv', newline='') as csvfile:
s = csv.reader(csvfile, delimiter=',')
read_csv_data = [[int(col) if col.isdigit() else col for col in row] for row in s]
>>> read_csv_data
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
csvモジュール使ってみたけどコレなかなか良いよ
数字の文字列を自動でintに変換してくれるようなことはしてくれないみたいだけど、なかなか良いよ
>>> import csv
>>> csv_data = [['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> with open('csv_test.csv', 'w', newline='') as csvfile:
s = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
s.writerows(csv_data)
>>> with open('csv_test.csv', newline='') as csvfile:
s = csv.reader(csvfile, delimiter=',')
read_csv_data = [[int(col) if col.isdigit() else col for col in row] for row in s]
>>> read_csv_data
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
635デフォルトの名無しさん
2017/11/24(金) 22:18:26.44ID:W4G6A7kr ちょっと待って、ちょっと待ってぇ、>>618と比較してみようか
>>> csv_data = [['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> with open('csv_test.csv', 'w') as f:
f.write('\n'.join([','.join([str(col) for col in row]) for row in csv_data]))
57
>>> with open('csv_test.csv') as f:
read_csv_data = [[int(col) if col.isdigit() else col for col in row.split(',')] for row in f.read().split('\n')]
>>> read_csv_data
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
うーん、こっちもナウイよね
>>> csv_data = [['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
>>> with open('csv_test.csv', 'w') as f:
f.write('\n'.join([','.join([str(col) for col in row]) for row in csv_data]))
57
>>> with open('csv_test.csv') as f:
read_csv_data = [[int(col) if col.isdigit() else col for col in row.split(',')] for row in f.read().split('\n')]
>>> read_csv_data
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>
うーん、こっちもナウイよね
636デフォルトの名無しさん
2017/11/24(金) 22:47:43.93ID:dBxfSdVP >>632
全部
全部
637デフォルトの名無しさん
2017/11/24(金) 22:50:17.62ID:mPUfH2u/ 5. 敵
ってのはいないのか
ってのはいないのか
638デフォルトの名無しさん
2017/11/25(土) 01:20:28.23ID:P57Umvv2 研究道具
639デフォルトの名無しさん
2017/11/25(土) 15:46:17.92ID:unmm6CwQ640デフォルトの名無しさん
2017/11/25(土) 15:48:10.37ID:unmm6CwQ >>632
Cのラッパー
Cのラッパー
641デフォルトの名無しさん
2017/11/25(土) 15:51:44.65ID:8MJ8aqbo hdf5が有能
個人で使う場合はだけど
個人で使う場合はだけど
642デフォルトの名無しさん
2017/11/25(土) 16:01:20.11ID:mxSpQEHX 方言つか、JSONの仕様に従わないものはそもそもJSONじゃない。
まあツールによっては読み込み時に末尾カンマを許容していたりする場合があるけど、
それも癖というほどのものでもないだろう。
まあツールによっては読み込み時に末尾カンマを許容していたりする場合があるけど、
それも癖というほどのものでもないだろう。
643デフォルトの名無しさん
2017/11/25(土) 17:42:47.00ID:Liv5eBGp bottleってなんでHTMLの拡張子が.tplなんだろう?pycharmでシンタックスハイライトできないじゃん
644デフォルトの名無しさん
2017/11/25(土) 21:15:56.32ID:WUmHjByJ Pythonチュートリアル読み終えたんだけど何作ればいい?
645デフォルトの名無しさん
2017/11/25(土) 21:51:36.80ID:Liv5eBGp そんなこと自分で考えろよ
646デフォルトの名無しさん
2017/11/25(土) 22:27:04.77ID:fPJ/ssTh647デフォルトの名無しさん
2017/11/26(日) 11:25:37.85ID:mDBTtSZ5 >>631
オレオレcsvモジュールcsv_normal.py作ってみたよ(https://ideone.com/E2XicF)
フィールドはカンマで区切り、行は改行で分けるノーマルなcsvを扱うモジュールだよ
※フィールドの左右の空白は無視するよ(stripするよ)
・フィールドは見やすいように文字幅を揃えて保存するよ
・intに変換できる文字列フィールドはintに変換するよ
・floatに変換できる文字列フィールドはfloatに変換するよ
・列の追加関数と削除関数を用意しているよ
オレオレcsvモジュールcsv_normal.py作ってみたよ(https://ideone.com/E2XicF)
フィールドはカンマで区切り、行は改行で分けるノーマルなcsvを扱うモジュールだよ
※フィールドの左右の空白は無視するよ(stripするよ)
・フィールドは見やすいように文字幅を揃えて保存するよ
・intに変換できる文字列フィールドはintに変換するよ
・floatに変換できる文字列フィールドはfloatに変換するよ
・列の追加関数と削除関数を用意しているよ
648デフォルトの名無しさん
2017/11/26(日) 11:37:41.95ID:WsfHWCB2 そんなRFCにも対応できてないゴミをわざわざ作って公開してなにが楽しいのやら。
649デフォルトの名無しさん
2017/11/26(日) 11:47:38.84ID:7Eh10X3o 上にも書いたけど、それpandasで遥かに高度なことできるよ
pd.read_csvのdtypeにフィールド名と型の組み合わせの辞書を渡すだけだしastypeメソッドで特定の要素だけ後から型変えれるし
pd.read_csvのdtypeにフィールド名と型の組み合わせの辞書を渡すだけだしastypeメソッドで特定の要素だけ後から型変えれるし
650デフォルトの名無しさん
2017/11/26(日) 11:56:20.97ID:esw4gVHx651デフォルトの名無しさん
2017/11/26(日) 12:05:04.33ID:esw4gVHx もちろんジョークなので悪しからず
http://www.geekpage.jp/blog/?id=2007/7/9
http://www.geekpage.jp/blog/?id=2007/7/9
652デフォルトの名無しさん
2017/11/26(日) 12:15:51.76ID:gitIxNz2 むしろ必要な機能だけを実装する低機能モジュールの試みなのでは
653デフォルトの名無しさん
2017/11/26(日) 12:48:12.87ID:pGcZHtwF654デフォルトの名無しさん
2017/11/26(日) 12:55:23.96ID:61tvbHXI 謎擁護見苦しいぞ
655デフォルトの名無しさん
2017/11/26(日) 13:28:49.64ID:LfmB80sO 批判できる俺カッケー
ってかww
ってかww
656デフォルトの名無しさん
2017/11/26(日) 13:46:26.16ID:d4hGNmNC 肯定意見しか認めないのもどうかと
それでも批判意見に反対するなら批判内容まで触れるべきと思います
それでも批判意見に反対するなら批判内容まで触れるべきと思います
657デフォルトの名無しさん
2017/11/26(日) 13:49:02.89ID:6vKcPFg6658デフォルトの名無しさん
2017/11/26(日) 13:54:24.74ID:Ry1/J8TT >>653
例え無駄でもがんばった子を褒めるのは小学校の先生までで十分です。
公式に出てるcsvモジュールのサンプルコードをコピペ改変してデータを読み書きするまでどんなノロマでも5分もかからない作業なのに半端な独自実装を書く奴はただのアホです。
例え無駄でもがんばった子を褒めるのは小学校の先生までで十分です。
公式に出てるcsvモジュールのサンプルコードをコピペ改変してデータを読み書きするまでどんなノロマでも5分もかからない作業なのに半端な独自実装を書く奴はただのアホです。
659デフォルトの名無しさん
2017/11/26(日) 14:02:06.75ID:pGcZHtwF 誉めろなんて誰も言ってないが...
660デフォルトの名無しさん
2017/11/26(日) 14:09:02.96ID:Vsmdvm4Z どんなに頑張ったって1%の天才と99%のコピペ達なんだ
661デフォルトの名無しさん
2017/11/26(日) 14:16:57.73ID:Vsmdvm4Z 虚勢を張ったコピペ職人
自覚を持ったコピペ職人
僕はね自覚を持ったコピペ職人になりたいんだ
自覚を持ったコピペ職人
僕はね自覚を持ったコピペ職人になりたいんだ
662デフォルトの名無しさん
2017/11/26(日) 14:58:36.17ID:mDBTtSZ5 ふぅー 落ち着いたか、、大興奮のレスバトルだったね、見ててワクワクしましたわ
さっきまでのワイの感想「今日はワイがスレの主役やでぇー、 キャッ、イケメンが擁護してくれてはるー、イケメン頑張れっ!」
あとは>>631の感想があれば満足やで、あっちなみにワイは1%の天才側やでぇコピペしてへんから
あと21行目とコメントがいまいちなのと、26行目のコメントが間違ってたから修正な
21行目
# #csv_dataのインデックス4の列に[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
↓
# #csv_dataのインデックス4に列[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
26行目
# #csv_dataのインデックス4の列に[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
↓
# #csv_dataのインデックス1に列[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
さっきまでのワイの感想「今日はワイがスレの主役やでぇー、 キャッ、イケメンが擁護してくれてはるー、イケメン頑張れっ!」
あとは>>631の感想があれば満足やで、あっちなみにワイは1%の天才側やでぇコピペしてへんから
あと21行目とコメントがいまいちなのと、26行目のコメントが間違ってたから修正な
21行目
# #csv_dataのインデックス4の列に[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
↓
# #csv_dataのインデックス4に列[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
26行目
# #csv_dataのインデックス4の列に[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
↓
# #csv_dataのインデックス1に列[1, 2, 3, 4, 5.9, 12, 15, 16]を追加
663デフォルトの名無しさん
2017/11/26(日) 15:24:49.96ID:esw4gVHx レベル2ではなく真正か
雪風より酷い
雪風より酷い
664デフォルトの名無しさん
2017/11/26(日) 15:32:28.30ID:6vKcPFg6 検索しても引っかかんないんだけどこのコピペどの板発祥なん?
665デフォルトの名無しさん
2017/11/26(日) 15:35:18.00ID:Of43oNR8 まぁ口だけよりは物作ってるやつの方が有能ではあるぞ
666デフォルトの名無しさん
2017/11/26(日) 16:12:09.17ID:gitIxNz2 公式のCSVモジュールも最初はこんな感じだったんだろうか
667デフォルトの名無しさん
2017/11/26(日) 16:12:31.86ID:kUxrkBSh うぉおおコードがキモいよぅ……
2次元配列を確保していじるあたりの雰囲気がC++っぽくてPython的ではない
というかクラス使えと
def _csvfield2str(csv_data):
"""
csvのフィールドを全て文字列に変える
"""
return [[str(field).strip() for field in row] for row in csv_data]
この辺がキモすぎる
コメント一行にしたいし二重for inを崩したいのと同じような関数が並んでいるのをどげんかしたい
その原因はこの関数か?
def _str2int(string):
なんでcsv_readで重要そうな型の概念がこんな奥底にあるんだよ
というかこの関数必要なのか
2次元配列を確保していじるあたりの雰囲気がC++っぽくてPython的ではない
というかクラス使えと
def _csvfield2str(csv_data):
"""
csvのフィールドを全て文字列に変える
"""
return [[str(field).strip() for field in row] for row in csv_data]
この辺がキモすぎる
コメント一行にしたいし二重for inを崩したいのと同じような関数が並んでいるのをどげんかしたい
その原因はこの関数か?
def _str2int(string):
なんでcsv_readで重要そうな型の概念がこんな奥底にあるんだよ
というかこの関数必要なのか
668デフォルトの名無しさん
2017/11/26(日) 16:49:48.70ID:EGzofRDo どんどんコードレビューしていけ
669デフォルトの名無しさん
2017/11/26(日) 16:51:34.28ID:mDBTtSZ5 >>667
おっ、コード見てくれるなんて有り難いね
状態は保持しないからクラスはいらないかな、デリミタをカンマ以外に
選べるようにする場合はデリミタ保持しないとアレだからクラスにするけど
関数のコメントは増えるかもしれないし”””が好みだね
エディタの色分け表示の関係もあって”””使ってるけど、こだわりはそんなにない
内包表記の二重forは全然抵抗無いんだけど、csvは2次元配列だし、むしろ分かりやすいかと
_str2int関数とかは内包表記で使うために用意した
文字列をintにする場合、isdigit()で変換可能かどうかチェックしてというのを三項演算子で書いてたけど
長くなるし分かりにくいし、’ 10 ’のような文字列だとisdigit()でFalseになるからisdigit()する前に
文字列をstrip()しないとだし、floatはどうすんの?というアレがアレでこうなったというわけです
’2e+3’とかもfloat変換に対応すると判定がわけわかめなんで、一度float変換してみてエラーならダメなのねって感じです
おっ、コード見てくれるなんて有り難いね
状態は保持しないからクラスはいらないかな、デリミタをカンマ以外に
選べるようにする場合はデリミタ保持しないとアレだからクラスにするけど
関数のコメントは増えるかもしれないし”””が好みだね
エディタの色分け表示の関係もあって”””使ってるけど、こだわりはそんなにない
内包表記の二重forは全然抵抗無いんだけど、csvは2次元配列だし、むしろ分かりやすいかと
_str2int関数とかは内包表記で使うために用意した
文字列をintにする場合、isdigit()で変換可能かどうかチェックしてというのを三項演算子で書いてたけど
長くなるし分かりにくいし、’ 10 ’のような文字列だとisdigit()でFalseになるからisdigit()する前に
文字列をstrip()しないとだし、floatはどうすんの?というアレがアレでこうなったというわけです
’2e+3’とかもfloat変換に対応すると判定がわけわかめなんで、一度float変換してみてエラーならダメなのねって感じです
670デフォルトの名無しさん
2017/11/26(日) 18:13:41.39ID:xL/UhMqd まぁ、道具として使うなら、想定通りに動きゃいいけどな
671デフォルトの名無しさん
2017/11/26(日) 18:58:33.98ID:0QF+Tfxu エロチャットやるぞ
672デフォルトの名無しさん
2017/11/26(日) 19:27:04.78ID:qKR3tC8i 業務に使わせてもらっていいですか?!
あとコメント行で俺が作ったことにして書き換えたいのですが
あとコメント行で俺が作ったことにして書き換えたいのですが
673デフォルトの名無しさん
2017/11/26(日) 19:52:23.70ID:UQqD+tZj マジで言ってんの?
674デフォルトの名無しさん
2017/11/26(日) 20:03:10.38ID:Ry1/J8TT さすがに冗談だろ。
業務のコードにこんな独自実装なゴミ書いたら小一時間説教される。ていうか、俺はしたことある。
c++でstrtok使ってcsv読んでトラブル起こしたアホを。
業務のコードにこんな独自実装なゴミ書いたら小一時間説教される。ていうか、俺はしたことある。
c++でstrtok使ってcsv読んでトラブル起こしたアホを。
675デフォルトの名無しさん
2017/11/26(日) 20:07:50.74ID:esw4gVHx 真性も要らねーけどアホ自慢も要らねー
676デフォルトの名無しさん(玉音放送)
2017/11/26(日) 20:19:17.72ID:LevDKd5+ ライブラリ使うほうが怖い面もあるけどな
677デフォルトの名無しさん
2017/11/26(日) 21:49:03.89ID:mDBTtSZ5 ふぅー 落ち着いたか、、大興奮のレスバトルだったね、見ててワクワクしましたわ
さっきまでのワイの感想「今日はワイがスレの主役やでぇー、エェ? 業務使用の話まで来てるぅ 出典元はワイにしとけやガハハハ」
さっきまでのワイの感想「今日はワイがスレの主役やでぇー、エェ? 業務使用の話まで来てるぅ 出典元はワイにしとけやガハハハ」
678デフォルトの名無しさん
2017/11/26(日) 21:50:02.51ID:CpY2D/VB ベストパイソニストになりたいけど方法ある?
679デフォルトの名無しさん
2017/11/26(日) 21:51:38.81ID:S6NQJbZd680デフォルトの名無しさん
2017/11/27(月) 00:44:31.83ID:zPT1usJA681デフォルトの名無しさん
2017/11/27(月) 06:18:15.08ID:+ucRUmut 俺も書いてみた
実用性のない気持ち悪くいコードを書いたつもり
import functools
save=lambda data:'\n'.join(map(','.join,map(functools.partial(map,str),data)))
def foo(s):
try:return int(s)
except ValueError:return s.strip()
load=lambda s:[list(map(foo,s.split(',')))for s in s.splitlines()]
実用性のない気持ち悪くいコードを書いたつもり
import functools
save=lambda data:'\n'.join(map(','.join,map(functools.partial(map,str),data)))
def foo(s):
try:return int(s)
except ValueError:return s.strip()
load=lambda s:[list(map(foo,s.split(',')))for s in s.splitlines()]
682デフォルトの名無しさん
2017/11/27(月) 12:00:08.96ID:kaiasZZ9 >>647
csv_normal.pyがバージョンアップしたよ(https://ideone.com/78qd00)
・フィールドに日本語が混じっていても位置ズレしないよ
・csvファイルの読み書きにencoding指定できるようにしたよ
pandasってフィールドに日本語混じってると列が位置ズレして表示されるでしょ?
よく知らんけど、ある意味pandas超えたわガハハハ
csv_normal.pyがバージョンアップしたよ(https://ideone.com/78qd00)
・フィールドに日本語が混じっていても位置ズレしないよ
・csvファイルの読み書きにencoding指定できるようにしたよ
pandasってフィールドに日本語混じってると列が位置ズレして表示されるでしょ?
よく知らんけど、ある意味pandas超えたわガハハハ
683デフォルトの名無しさん
2017/11/27(月) 17:53:10.75ID:kaiasZZ9 >>682
csv_normal.pyが更にバージョンアップしたよ(https://ideone.com/E3CpT8)
・クラス化したよ
モジュール.関数でいちいち呼び出すのめんどくせーと感じ>>667ご指摘の通りクラス化したよ、快適になったよ
十分楽しんだので、これで最後にするよ
csv_normal.pyが更にバージョンアップしたよ(https://ideone.com/E3CpT8)
・クラス化したよ
モジュール.関数でいちいち呼び出すのめんどくせーと感じ>>667ご指摘の通りクラス化したよ、快適になったよ
十分楽しんだので、これで最後にするよ
684デフォルトの名無しさん
2017/11/27(月) 18:41:37.25ID:kbE8zzrJ 自ら進化を止めるとき、それは己の負けを意味するのだ。
負けるな>>683
負けるな>>683
685デフォルトの名無しさん
2017/11/27(月) 18:46:50.34ID:qn8iMzPT strtokは非スレッドセーフだったよな?
マルチスレッド環境でアホやったのかな
マルチスレッド環境でアホやったのかな
686デフォルトの名無しさん
2017/11/27(月) 19:02:21.35ID:x+zk8UEy Excel のCSV でも、日本語UTF-8 を扱えないのに、
文字化けしないのは、Ruby 以外では初めてかも
すごい技術力!
文字化けしないのは、Ruby 以外では初めてかも
すごい技術力!
687デフォルトの名無しさん
2017/11/28(火) 09:17:45.29ID:eQEpQbXs 車輪を作る仕事は特殊性癖の人がやればいい
普通の人はそれをどう使うかに頭使った方がいい
普通の人はそれをどう使うかに頭使った方がいい
688デフォルトの名無しさん
2017/11/28(火) 12:23:03.74ID:s1leOSNl ちんこを踏んづける用の車輪とか?
689遊園
2017/11/29(水) 02:03:12.38ID:jnHcEkAi マはデータ管理しやすい様に隙間(行間)を無くすが、事務は見やすい様に適度に謎の改行を
入れるから、csvファイルは型を崩さずに計算して出力した方が良い。
入れるから、csvファイルは型を崩さずに計算して出力した方が良い。
690デフォルトの名無しさん
2017/11/29(水) 09:20:15.32ID:0Jcv/v+k クラスのプライベートなインスタンス変数定義するとき、アンダースコア1つか2つどっち使ってる?
今すごい悩んでる。
今すごい悩んでる。
691デフォルトの名無しさん
2017/11/29(水) 09:37:02.69ID:00eiWOz6 privateなら2つ
protectedなら1つ
protectedなら1つ
692デフォルトの名無しさん
2017/11/29(水) 10:46:10.68ID:N1ji+G5b kivyの質問いいかな?
AsyncImageってので画像表示させてるんだけど、py側から渡すファイル名が同じだと画像の中身が変わっていても表示が変わらない。どうもcacheから読み込んでるらしい。kivyファイルの方に、
. AsyncImage:
. nocache: True
. source: root.file_name
とかやってみたけどダメだった。わかる人いたら教えてくらさい
AsyncImageってので画像表示させてるんだけど、py側から渡すファイル名が同じだと画像の中身が変わっていても表示が変わらない。どうもcacheから読み込んでるらしい。kivyファイルの方に、
. AsyncImage:
. nocache: True
. source: root.file_name
とかやってみたけどダメだった。わかる人いたら教えてくらさい
693デフォルトの名無しさん
2017/11/29(水) 16:14:26.22ID:wmbD4JNt .reload()
694価格が取れない(><)
2017/11/30(木) 02:48:08.03ID:4quHV4wq 世界の株価URL (http://sekai-kabuka.com/)から、
日経先物ミニの価格をスクレイピングしたいのだが、出来ない。
以下のコードで見ても価格が取れてない。
どうしたらいい?
XPathや正規表現で取れるかな?
誰か分かる人、お願いしますm(__)m
開発者ツールで見ると、価格が変わるとspanタブが閉じてしまうことと関係あるのかな?
import requests,bs4
from bs4 import BeautifulSoup
URL = "http://sekai-kabuka.com/"
res = requests.get(URL)
print(res.status_code)
r = res.content#html
soup = BeautifulSoup(r, "html.parser")
print(soup)
日経先物ミニの価格をスクレイピングしたいのだが、出来ない。
以下のコードで見ても価格が取れてない。
どうしたらいい?
XPathや正規表現で取れるかな?
誰か分かる人、お願いしますm(__)m
開発者ツールで見ると、価格が変わるとspanタブが閉じてしまうことと関係あるのかな?
import requests,bs4
from bs4 import BeautifulSoup
URL = "http://sekai-kabuka.com/"
res = requests.get(URL)
print(res.status_code)
r = res.content#html
soup = BeautifulSoup(r, "html.parser")
print(soup)
695デフォルトの名無しさん
2017/11/30(木) 05:59:17.46ID:aDlGM/9P ブラウザの右クリックメニューで、要素の検査をすれば、何のタグか分かる
696デフォルトの名無しさん
2017/11/30(木) 07:44:44.70ID:FOYY/rMw697デフォルトの名無しさん
2017/11/30(木) 08:57:15.59ID:B6s9nup6698694
2017/11/30(木) 13:15:32.27ID:4quHV4wq >>697
thx
thx
699デフォルトの名無しさん
2017/11/30(木) 16:13:19.68ID:POyH2hQQ >>683
csv_normal.pyがメジャーバージョンアップしたよ(https://ideone.com/mD1p2q)
・関数がメッチャ増えたよ
・メソッドがメッチャ増えたよ
十分楽しんだので、これで最後にするよ
csv_normal.pyがメジャーバージョンアップしたよ(https://ideone.com/mD1p2q)
・関数がメッチャ増えたよ
・メソッドがメッチャ増えたよ
十分楽しんだので、これで最後にするよ
700デフォルトの名無しさん
2017/11/30(木) 18:58:35.43ID:2Kr0Hg+S 楽しんでもらえて本望じゃわい
てか定期的なネタ投下も疲れる by 603
てか定期的なネタ投下も疲れる by 603
701デフォルトの名無しさん
2017/12/01(金) 09:32:39.92ID:I+G4kv/i いらね
702デフォルトの名無しさん
2017/12/01(金) 10:46:17.10ID:r85+E8jD anaconda使ってるけどライブラリをcondaでインストしたりpipでインストしたりで混合してる
今は普通に動いてるけど多分後で困るよね?
今は普通に動いてるけど多分後で困るよね?
703デフォルトの名無しさん
2017/12/01(金) 15:06:05.69ID:vWwQdnV3 >>702
結構、困る。
結構、困る。
704デフォルトの名無しさん
2017/12/01(金) 15:08:37.42ID:vWwQdnV3 質問です:
anaconda/Jupyterで勉強していましたが、
どうしても理解できない文法とか調べるのがつらくてIDEに頼ろうと思います。
PyCharmをインストール実行できたのですが、
anacondaで作った環境との連携方法がどうしてもわかりません。
連携して使うんですよね?
anaconda/Jupyterで勉強していましたが、
どうしても理解できない文法とか調べるのがつらくてIDEに頼ろうと思います。
PyCharmをインストール実行できたのですが、
anacondaで作った環境との連携方法がどうしてもわかりません。
連携して使うんですよね?
705デフォルトの名無しさん
2017/12/01(金) 15:24:18.10ID:cNfuWNNU706704
2017/12/01(金) 16:39:36.60ID:vWwQdnV3 >>705
有難うございました。
今まで出ていた、
tokenを設定しろ、
といったエラーメッセージは出なくなりました。
?を押しても次のセルに移動せずに止まったままです。
動いているのか動いていないのか。。。
pythonw.exeじゃなくて、python.exeであってますよね。
有難うございました。
今まで出ていた、
tokenを設定しろ、
といったエラーメッセージは出なくなりました。
?を押しても次のセルに移動せずに止まったままです。
動いているのか動いていないのか。。。
pythonw.exeじゃなくて、python.exeであってますよね。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 空自機レーダー照射、音声データ公開 中国 ★2 [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★3 [597533159]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- ド・ド・ドリフのwwwwwwwww
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- スマホのキャリア無制限の奴あつまれwww
