2013-05-13 45 views
0

我想從csv文件創建一個Python列表。 CSV文件只包含一列,大約有300行數據。該列表應該(理想情況下)包含每行中的一串數據。使用csv.reader創建列表()

當我執行下面的代碼時,我最終列出了一個列表(每個元素是一個列表,而不是一個字符串)。我正在使用的CSV文件格式不正確,還是有其他遺失的東西?

filelist = []     
with open(r'D:\blah\blahblah.csv', 'r') as expenses: 
    reader = csv.reader(expenses) 
    for row in reader: 
     filelist.append(row) 
+0

顯示您的輸入和輸出。 – Marcin 2013-05-13 22:20:48

+0

CSV是一系列行。一行是一系列列值。列值是字符串。所以,像這樣迭代一個CSV _should_給你一個字符串列表的列表。 – abarnert 2013-05-13 22:38:15

回答

7

row是一行有一個字段。你需要得到該行的第一個項目:

filelist.append(row[0]) 

或者更簡潔:

filelist = [row[0] for row in csv.reader(expenses)] 
+0

謝謝,這似乎工作。我沒有想到強調該行內的特定項目,當只有一個項目開始時。 – Schack 2013-05-14 21:43:20

0

每一行讀作小區列表。 所以,你想要做的是

output = [ row[0] for row in reader ] 

,因爲你只有每一行中填寫的第一個單元格。

+0

在我的手機上打字時速度很慢-.- * – 2013-05-13 22:24:21

1

看來你的「csv」不包含任何分隔符,比如「;」要麼 」,」。 因爲你說它只包含1列。所以它不是一個真正的csv,不應該有一個分離器。

,所以你可以簡單地讀取文件中的行明智:

filelist = [] 
for line in open(r'D:\blah\blahblah.csv', 'r').readlines(): 
    filelist.append(line.strip()) 
+0

由於轉義分隔符和引號以及其他csv典型符號而不是一個好主意...... – 2013-05-13 22:28:31

+0

是的。取決於輸入文件,如果它是rfc兼容的csv或純文本文件。 – jens 2013-05-13 22:32:25