[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/21 11:57 / Filesize : 231 KB / Number-of Response : 1026
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part54



1 名前:デフォルトの名無しさん [2017/09/01(金) 16:44:47.30 ID:igIE9hK/.net]
Pythonオフィシャルサイト
www.python.org/

テンプレ等は2以降で

■前スレ
Pythonのお勉強 Part53
mevius.2ch.net/test/read.cgi/tech/1494683284/

601 名前:デフォルトの名無しさん mailto:sage [2017/11/21(火) 22:42:57.01 ID:D0Caxv/X.net]
>>575
別に移行しなくてもいいんでない。共にやれば。

602 名前:デフォルトの名無しさん [2017/11/22(水) 16:17:07.47 ID:9hdU5G5U.net]
pythonチュートリアル読んでるけど細かすぎねえかこれ

603 名前:デフォルトの名無しさん [2017/11/22(水) 16:38:05.76 ID:tp3rvCxZ.net]
こまいかどうかはともかく
体系がなっとらん

604 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 17:50:18.07 ID:a2w0tA5i.net]
ドキュメントは必要なところを読めばいいから、ある程度細かいことは歓迎だけどな。
プログラミング自体の初心者だと、たしかにわかりづらい部分はあるかもね。
プログラミング経験者からすると、Python独自の作法とか、
他言語との対照表みたいなのがあるといい。

605 名前:遊園 mailto:sage [2017/11/22(水) 18:08:23.92 ID:MeIRWi6F.net]
俺も欲しい。

できればC#と比べてくれると嬉しい。

606 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 22:00:33.41 ID:pEQ0GCud.net]
けどそのチュートリアル大事やで。
読み終わったあと、さぁ何をしようってなるよ。

607 名前:遊園 mailto:sage [2017/11/22(水) 23:24:22.00 ID:MeIRWi6F.net]
就職かな?w

 エクセル操作に一票

608 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 23:50:34.03 ID:a2w0tA5i.net]
>>594
そうだよね。

くだすれの方でネタになったargparseのチュートリアルも正直かなり細かいけど、
ああ、こんなことまで出来るんだぁ、から始まって、
結局その例をパクリながら、自作スクリプトを書き直ししたしなぁ。

チュートリアルは興味を持ってもらってなんぼというところもあるかも知れないけど、
とりあえずマネてみればそれなりに応用は利くようになると思うのが実感。

609 名前:デフォルトの名無しさん [2017/11/23(木) 01:32:49.79 ID:dN4AoUwX.net]
初歩的な質問ですいませんが誰か教えてください
def calc(self, event):
#押されたボタンのテキストを取得
char = event.widget['text']
#resetが押された場合
if char == 'reset':
self.k = ['0']
#rが押された場合
elif char == 'r':
self.k = ['0']
#+が押された場合
elif char == '+':
x = x + 1
self.k = [str(x)]#今の値に+1する
elif char == '-':
x = x - 1
self.k = [str(x)] #今の値から-1する

self.dp_var.set(
' '.join(self.k)
)
というプログラムの現在ディスプレイに表示されてる値に+1をするという部分の作り方
で詰まってしまいました
誰かヒントだけでも教えてください・・・



610 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 05:48:11.38 ID:uF7hi9HH.net]
>>597
どんな方法を使ったか知らないが普通
ディスプレイに表示されている値は出力されたものであり変更できない
一旦削除してまた別の数字を出力すれば

611 名前:デフォルトの名無しさん [2017/11/23(木) 08:55:51.04 ID:XBDj7YCq.net]
>>591
素晴らしい体系を提案してくれ給え。

612 名前:デフォルトの名無しさん [2017/11/23(木) 10:45:32.24 ID:A/UsFlMH.net]
event.widget.setlabel(str(self.k))

613 名前:デフォルトの名無しさん [2017/11/23(木) 10:57:35.66 ID:BHLx1drH.net]
event.widget.configure(width=20, height=5, text=str(x), font=('Migu 1M', '24'), fg='red)

614 名前:デフォルトの名無しさん [2017/11/23(木) 13:35:00.16 ID:Gsw8xDzr.net]
>598
80 60 85辺りかな?

615 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 17:54:37.84 ID:s5J6nT+y.net]
fot i in [100, 100, 100]:
print(i)

616 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 17:55:27.07 ID:OEoWdmlz.net]
2次元リストで要素はintとstrの混在,ファイルから読んで更新,ファイルに書き出すということをやってます。
1行ごとに読んでsplitで要素に分解して特定の列だけintに変換してlistに格納、書き出すときはint要素をstrに変換してjoinで結合, 1行ごとに書き込みという風にやってますがなんか無駄なような気がします。
2次元リストごと一括でread,writeする簡単な方法はありませんか?

617 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 18:31:53.82 ID:V6s4lnHY.net]
A,B,C(改行)
X,Y,Z(改行)

CSV だと、列区切りにカンマ、行区切りに改行を使うから、
1行ずつしか読み書きできない

全部の行をまとめると、行区切りがなくなる。
A,B,CX,Y,Z

618 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 18:33:23.12 ID:aJsuycVV.net]
Javaエンジニアです

コード量少なく済むってまじですか?

619 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 18:43:26.69 ID:iOhHGSNn.net]
まじ



620 名前:605 [2017/11/23(木) 18:50:50.08 ID:Gsw8xDzr.net]
>>607
マジか!!

621 名前:デフォルトの名無しさん [2017/11/23(木) 19:00:56.02 ID:A7IWH6W8.net]
>>605
全部一気に読みこむと改行て消えるんか?

622 名前:デフォルトの名無しさん [2017/11/23(木) 19:49:19.59 ID:DyM7pS8r.net]
>>604
json, pickle, sqlite3好きなの選べ

623 名前:デフォルトの名無しさん [2017/11/23(木) 20:13:58.63 ID:EP8I35kw.net]
  ●●●宇宙の外側に何があるのか?●●●
  jbbs.livedoor.jp/bbs/read.cgi/stud▲y/3729/1069922074/84-87

  この掲示板(万▲有サロン)に優秀な書き▲込みをして、総額148万円の賞金をゲットしよう!(*^^)v
  jbbs.livedoor.jp/stu▲dy/3729/ →リンクが不良なら、検▲索窓に入れる!

624 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 20:42:54.38 ID:V6s4lnHY.net]
>>609
改行はあるかも知れないけど、

その改行をすべて拾っていかないと、1行ずつ処理できない

625 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 20:56:22.29 ID:haiMWBI7.net]
pandas使えば一発で解決するな

626 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 21:11:52.18 ID:3u99Ww5l.net]
>>604
とりあえずCSV処理するときにsplitだのstrtokだの使うな。大人しくcsvモジュール使え。
エスケープシーケンスどころか空セルにすら対応できなくなるから。

627 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 21:15:48.96 ID:AE4DGBUv.net]
なんでわざわざライブラリあるのに自分で書こうと思うのか分からん

628 名前:デフォルトの名無しさん [2017/11/23(木) 21:24:21.79 ID:dN4AoUwX.net]
596です
ありがとうございます

629 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 02:28:11.33 ID:4BpIkKm4.net]
お前らよりも、ずっと神 https://www.youtube.com/user/sentdex/featured



630 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 02:28:27.65 ID:4BpIkKm4.net]
お前らよりも、ずっと神 https://www.youtube.com/user/sentdex/featured

631 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 10:34:27.08 ID:W4G6A7kr.net]
>>604
>>> csv_raw_data = """hoge,1,10,fuga
apple,2,20,pine

632 名前:apple
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
>>>
[]
[ここ壊れてます]

633 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 11:33:00.39 ID:W4G6A7kr.net]
>>610がすすめるjsonは癖があるし、pickleはバイナリデータだからdumpしないと読めないし編集できないし
sqlite3はしらんけども・・、csvのデータを扱うなら>>614の言うようにcsvモジュール使うのがベストだと思う

しかし、>>604の質問を考察するに特殊なcsvを扱うわけではなく
自分で作った2次元リストの保存にcsvにするというだけなのだから>>619でいいと思う(csvモジュール勉強するのめんどいじゃん)
さらに>>619は自由にカスタマイズ可能、例えば各列の先頭をそろえるためにスペースを入れるとかなんとか
うーん、>>619がベストアンサーであると確定してしまったね

634 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 11:38:11.01 ID:GsVE4oKd.net]
strにカンマとタブとスペースと空文字と空白と改行が以下略

635 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 11:45:22.75 ID:GsVE4oKd.net]
まず手で編集する気があるのかを訪ねるべきだった

636 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 11:51:38.02 ID:GsVE4oKd.net]
次に値域を尋ねるべきだった
フォーマットについて話すのはそれからで良かった

637 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 12:38:53.37 ID:lepqzR4M.net]
jsonそんなに癖あるかな

638 名前:デフォルトの名無しさん [2017/11/24(金) 12:42:09.24 ID:znYgKojB.net]
(自分が)使えない事を世間では「クセがある」と言うんやで
覚えとき

639 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 12:46:05.01 ID:JwzuLRFp.net]
csvモジュールの使い方覚えるのさえ面倒くさがる雑魚がpython、、、



640 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 13:33:05.64 ID:gyq0zbJn.net]
雑魚にも難しいことができるように言語は進歩してきた
もっと雑魚の言い分に耳を傾けろおら

641 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 14:40:46.80 ID:W4G6A7kr.net]
>>604
おいっ! すごい方法を思いついちまった、天才かもしれん
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']]
>>>

642 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 14:57:34.18 ID:W4G6A7kr.net]
execよりevalの方がいいわ安全だし
>>> value_name = eval(save_data)
>>> print(value_name)
[['hoge', 1, 10, 'fuga'], ['apple', 2, 20, 'pineapple'], ['strawberry', 3, 30, 'mango']]
>>>

643 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 16:54:50.41 ID:gjW1rQ8R.net]
どんな言語を使ってプログラムできても所詮俺たちはコピペ職人に過ぎない

644 名前:デフォルトの名無しさん [2017/11/24(金) 18:45:37.50 ID:FT0GxPR+.net]
そう卑下するな
コピペでも職人の域に逹してるなら大したもんだ

645 名前:603 mailto:sage [2017/11/24(金) 20:40:44.33 ID:SOBToF3l.net]
たくさんレスありがとさんです
pickleとかpandasとか知らなかったので大変勉強になりました。今回はファイルを直接編集する道も残しておきたかったのでcsvにしました。リードもライトもfor文がなくなってすっきりしましたw

646 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 21:23:09.23 ID:t572wEhv.net]
Pythonは貴方にとって何?
1. 飯の種
2. 仕事の道具
3. 趣味のツール
4. 楽しいおもちゃ

647 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 21:35:38.52 ID:r4TUJvjC.net]
趣味のおもちゃ

648 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 21:53:56.64 ID:W4G6A7kr.net]
>>632
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']]
>>>

649 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 22:18:26.44 ID:W4G6A7kr.net]
ちょっと待って、ちょっと待ってぇ、>>619と比較してみようか

>>> 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']]
>>>
うーん、こっちもナウイよね



650 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 22:47:43.93 ID:dBxfSdVP.net]
>>633
全部

651 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 22:50:17.62 ID:mPUfH2u/.net]
5. 敵

ってのはいないのか

652 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 01:20:28.23 ID:P57Umvv2.net]
研究道具

653 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 15:46:17.92 ID:unmm6CwQ.net]
>>606
近寄るな
頭が悪くなる

>>624
微妙に方言がある
(方言は置いといても)CSVよりマシだと思う

654 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 15:48:10.37 ID:unmm6CwQ.net]
>>633
Cのラッパー

655 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 15:51:44.65 ID:8MJ8aqbo.net]
hdf5が有能
個人で使う場合はだけど

656 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 16:01:20.11 ID:mxSpQEHX.net]
方言つか、JSONの仕様に従わないものはそもそもJSONじゃない。
まあツールによっては読み込み時に末尾カンマを許容していたりする場合があるけど、
それも癖というほどのものでもないだろう。

657 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 17:42:47.00 ID:Liv5eBGp.net]
bottleってなんでHTMLの拡張子が.tplなんだろう?pycharmでシンタックスハイライトできないじゃん

658 名前:デフォルトの名無しさん [2017/11/25(土) 21:15:56.32 ID:WUmHjByJ.net]
Pythonチュートリアル読み終えたんだけど何作ればいい?

659 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 21:51:36.80 ID:Liv5eBGp.net]
そんなこと自分で考えろよ



660 名前:デフォルトの名無しさん mailto:sage [2017/11/25(土) 22:27:04.77 ID:fPJ/ssTh.net]
>>645
https://paiza.jp/poh/ando
ここで水着をgetする

661 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:25:37.85 ID:mDBTtSZ5.net]
>>632
オレオレcsvモジュールcsv_normal.py作ってみたよ(https://ideone.com/E2XicF)
フィールドはカンマで区切り、行は改行で分けるノーマルなcsvを扱うモジュールだよ
※フィールドの左右の空白は無視するよ(stripするよ)

 ・フィールドは見やすいように文字幅を揃えて保存するよ
 ・intに変換できる文字列フィールドはintに変換するよ
 ・floatに変換できる文字列フィールドはfloatに変換するよ
 ・列の追加関数と削除関数を用意している

662 名前: []
[ここ壊れてます]

663 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:37:41.95 ID:WsfHWCB2.net]
そんなRFCにも対応できてないゴミをわざわざ作って公開してなにが楽しいのやら。

664 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:47:38.84 ID:7Eh10X3o.net]
上にも書いたけど、それpandasで遥かに高度なことできるよ
pd.read_csvのdtypeにフィールド名と型の組み合わせの辞書を渡すだけだしastypeメソッドで特定の要素だけ後から型変えれるし

665 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 11:56:20.97 ID:esw4gVHx.net]
>>649
プログラマレベル1から2に上がったくらいだと
謎の全能感を持ってるから何でも楽しいのよ

666 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 12:05:04.33 ID:esw4gVHx.net]
もちろんジョークなので悪しからず
www.geekpage.jp/blog/?id=2007/7/9

667 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 12:15:51.76 ID:gitIxNz2.net]
むしろ必要な機能だけを実装する低機能モジュールの試みなのでは

668 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 12:48:12.87 ID:pGcZHtwF.net]
まあ>>648が役に立つかどうかは知らんけど批判しかできない>>649-650よりマシ

669 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 12:55:23.96 ID:61tvbHXI.net]
謎擁護見苦しいぞ



670 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 13:28:49.64 ID:LfmB80sO.net]
批判できる俺カッケー
ってかww

671 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 13:46:26.16 ID:d4hGNmNC.net]
肯定意見しか認めないのもどうかと
それでも批判意見に反対するなら批判内容まで触れるべきと思います

672 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 13:49:02.89 ID:6vKcPFg6.net]
>>650はともかく>>649は批判意見でも何でもないただの難癖だろ

673 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 13:54:24.74 ID:Ry1/J8TT.net]
>>654
例え無駄でもがんばった子を褒めるのは小学校の先生までで十分です。

公式に出てるcsvモジュールのサンプルコードをコピペ改変してデータを読み書きするまでどんなノロマでも5分もかからない作業なのに半端な独自実装を書く奴はただのアホです。

674 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 14:02:06.75 ID:pGcZHtwF.net]
誉めろなんて誰も言ってないが...

675 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 14:09:02.96 ID:Vsmdvm4Z.net]
どんなに頑張ったって1%の天才と99%のコピペ達なんだ

676 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 14:16:57.73 ID:Vsmdvm4Z.net]
虚勢を張ったコピペ職人
自覚を持ったコピペ職人
僕はね自覚を持ったコピペ職人になりたいんだ

677 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 14:58:36.17 ID:mDBTtSZ5.net]
ふぅー 落ち着いたか、、大興奮のレスバトルだったね、見ててワクワクしましたわ
さっきまでのワイの感想「今日はワイがスレの主役やでぇー、 キャッ、イケメンが擁護してくれてはるー、イケメン頑張れっ!」
あとは>>632の感想があれば満足やで、あっちなみにワイは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]を追加

678 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 15:24:49.96 ID:esw4gVHx.net]
レベル2ではなく真正か
雪風より酷い

679 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 15:32:28.30 ID:6vKcPFg6.net]
検索しても引っかかんないんだけどこのコピペどの板発祥なん?



680 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 15:35:18.00 ID:Of43oNR8.net]
まぁ口だけよりは物作ってるやつの方が有能ではあるぞ

681 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 16:12:09.17 ID:gitIxNz2.net]
公式のCSVモジュールも最初はこんな感じだったんだろうか

682 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 16:12:31.86 ID:kUxrkBSh.net]
うぉおおコードがキモいよぅ……

2次元配列を確保していじるあたり

683 名前:フ雰囲気が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で重要そうな型の概念がこんな奥底にあるんだよ
というかこの関数必要なのか
[]
[ここ壊れてます]

684 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 16:49:48.70 ID:EGzofRDo.net]
どんどんコードレビューしていけ

685 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 16:51:34.28 ID:mDBTtSZ5.net]
>>668
おっ、コード見てくれるなんて有り難いね
状態は保持しないからクラスはいらないかな、デリミタをカンマ以外に
選べるようにする場合はデリミタ保持しないとアレだからクラスにするけど

関数のコメントは増えるかもしれないし”””が好みだね
エディタの色分け表示の関係もあって”””使ってるけど、こだわりはそんなにない

内包表記の二重forは全然抵抗無いんだけど、csvは2次元配列だし、むしろ分かりやすいかと

_str2int関数とかは内包表記で使うために用意した
文字列をintにする場合、isdigit()で変換可能かどうかチェックしてというのを三項演算子で書いてたけど
長くなるし分かりにくいし、’  10 ’のような文字列だとisdigit()でFalseになるからisdigit()する前に
文字列をstrip()しないとだし、floatはどうすんの?というアレがアレでこうなったというわけです
’2e+3’とかもfloat変換に対応すると判定がわけわかめなんで、一度float変換してみてエラーならダメなのねって感じです

686 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 18:13:41.39 ID:xL/UhMqd.net]
まぁ、道具として使うなら、想定通りに動きゃいいけどな

687 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 18:58:33.98 ID:0QF+Tfxu.net]
エロチャットやるぞ

688 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 19:27:04.78 ID:qKR3tC8i.net]
業務に使わせてもらっていいですか?!
あとコメント行で俺が作ったことにして書き換えたいのですが

689 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 19:52:23.70 ID:UQqD+tZj.net]
マジで言ってんの?



690 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 20:03:10.38 ID:Ry1/J8TT.net]
さすがに冗談だろ。
業務のコードにこんな独自実装なゴミ書いたら小一時間説教される。ていうか、俺はしたことある。
c++でstrtok使ってcsv読んでトラブル起こしたアホを。

691 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 20:07:50.74 ID:esw4gVHx.net]
真性も要らねーけどアホ自慢も要らねー

692 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 20:19:17.72 ID:LevDKd5+.net]
ライブラリ使うほうが怖い面もあるけどな

693 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 21:49:03.89 ID:mDBTtSZ5.net]
ふぅー 落ち着いたか、、大興奮のレスバトルだったね、見ててワクワクしましたわ
さっきまでのワイの感想「今日はワイがスレの主役やでぇー、エェ? 業務使用の話まで来てるぅ 出典元はワイにしとけやガハハハ」

694 名前:デフォルトの名無しさん mailto:sage [2017/11/26(日) 21:50:02.51 ID:CpY2D/VB.net]
ベストパイソニストになりたいけど方法ある?

695 名前:デフォルトの名無しさん [2017/11/26(日) 21:51:38.81 ID:S6NQJbZd.net]
>>679
ジーンズはリーバイス以外履くな
靴はPuma

ここからだな

696 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 00:44:31.83 ID:zPT1usJA.net]
>>678
ガハハじゃねーよ
朝一で新小岩駅で自殺しろゴミが

697 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 06:18:15.08 ID:+ucRUmut.net]
俺も書いてみた
実用性のない気持ち悪くいコードを書いたつもり
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()]

698 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 12:00:08.96 ID:kaiasZZ9.net]
>>648
csv_normal.pyがバージョンアップしたよ(https://ideone.com/78qd00)

 ・フィールドに日本語が混じっていても位置ズレしないよ
 ・csvファイルの読み書きにencoding指定できるようにしたよ

pandasってフィールドに日本語混じってると列が位置ズレして表示されるでしょ?
よく知らんけど、ある意味pandas超えたわガハハハ

699 名前:デフォルトの名無しさん mailto:sage [2017/11/27(月) 17:53:10.75 ID:kaiasZZ9.net]
>>683
csv_normal.pyが更にバージョンアップしたよ(https://ideone.com/E3CpT8)

 ・クラス化したよ
    モジュール.関数でいちいち呼び出すのめんどくせーと感じ>>668ご指摘の通りクラス化したよ、快適になったよ

十分楽しんだので、これで最後にするよ



700 名前:デフォルトの名無しさん [2017/11/27(月) 18:41:37.25 ID:kbE8zzrJ.net]
自ら進化を止めるとき、それは己の負けを意味するのだ。
負けるな>>684






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<231KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef