[問題] 讀 csv 直接變成 int

看板Python作者 (reindeer)時間12年前 (2012/05/05 21:53), 編輯推噓6(6012)
留言18則, 6人參與, 最新討論串1/1
我有個 csv 檔 長相類似 1,2,3 4,5,6 7,8,9 . . . 我讀進來 去掉空白 用 , spilt 出來的樣子會變成 ['1','2','3'] ['4','5','6'] ['7','8','9'] . . . 因為 list 太多條了 迴圈會跑很久 所以想請問有沒有可以直接轉成 int 而非 str 的方法 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.69.42.170

05/05 22:22, , 1F
import numpy; arr = numpy.loadtxt(your_file)
05/05 22:22, 1F

05/06 00:17, , 2F
for line in the_file: eval('['+line+']')
05/06 00:17, 2F

05/06 00:28, , 3F
下面兩種寫法不知道那個比較快
05/06 00:28, 3F

05/06 00:28, , 4F
map(list, map(eval, a))
05/06 00:28, 4F

05/06 00:29, , 5F
map(eval, map('[{}]'.format, a))
05/06 00:29, 5F

05/06 00:29, , 6F
a是被開啟的檔案
05/06 00:29, 6F

05/06 04:17, , 7F
map(int, line.strip().split(','))
05/06 04:17, 7F

05/06 11:48, , 8F
map 好用! 讚!
05/06 11:48, 8F

05/06 23:32, , 9F
[int(x) for x in line.strip().split(',')]
05/06 23:32, 9F

05/09 01:18, , 10F
根據這篇的說法 http://goo.gl/ulLih,似乎用樓上的 list
05/09 01:18, 10F

05/09 01:18, , 11F
comprehension 的方式是比較好的。
05/09 01:18, 11F

05/09 01:19, , 12F
相較於 map 。
05/09 01:19, 12F

05/09 18:47, , 13F
map也可以改寫成generator阿
05/09 18:47, 13F

05/09 18:48, , 14F
(list(eval(i)) for i in a)
05/09 18:48, 14F

05/09 18:49, , 15F
(eval('['+i+']') for i in a)
05/09 18:49, 15F

05/09 18:54, , 16F
map的好處是不用為迭代值命名,尤其python2中會名稱衝突
05/09 18:54, 16F

05/09 18:57, , 17F
是說不需要變list用tuple也可以的話
05/09 18:57, 17F

05/09 18:58, , 18F
直接map(eval, a)就好了@@"
05/09 18:58, 18F
文章代碼(AID): #1FfJ3BlZ (Python)