經典csv讀取器在術語文檔數組上不起作用的原因是csv文件的第一列是術語,而不是值。因此,該文件的語法如下:使用python從csv讀取術語 - 文檔矩陣
"";"label1";"label2";"label3" ...
"term1";1;0;8;...
"term2";0;0;3;...
.................................
我需要建立一個詞典,其關鍵字是LABEL1,LABEL3等..和值的列向量(這將是:快譯通[LABEL1] - > 1,0,dict [label2] - > 0,0等),這意味着這些條款對我來說完全沒用。
我已經實現了它是這樣一個定製的解決方案:
....
keys = f.readline().split('";"') #1st line of the csv
keys = keys[1:] #skipping ""
zeros = [0] * len(keys) #dicts initial values will be 0
d = OrderedDict(zip(keys, zeros))
lines = f.readlines()
for line in lines:
...
splittting, stripping etc I get a list with values (eg: 1,0,8 - see example above)
...
for value in values:
....
但是讀8個CSV文件(共12MB)需要超過90分鐘,我的筆記本電腦。
有沒有人知道一個更有效的方式來處理這個問題?
爲什麼你需要一個'OrderedDict'在這裏? – 2013-05-08 17:11:48
你有沒有考慮用[pandas](http://pandas.pydata.org/)加載文件,然後遍歷列和行來製作字典? – 2013-05-08 17:12:38