2014-01-21 59 views
0

我只是用Python弄溼了自己的腳,並且一直在尋找過去幾個小時的答案。我有一個包含所有小寫名稱列表的CSV文件作爲行。我試圖把每個字母的首字母大寫並保存到一個新文件中。以下是我目前爲止的內容,但無法處理CSV中的數據。如何從CSV文件加載數據並對其進行處理並將其寫入Python中的另一個CSV文件

import csv 

input_file = open('file_to_read.csv', 'rb') 
output_file = open('file_to_write.csv', 'wb') 

reader = csv.reader(input_file) 
writer = csv.writer(output_file) 

for row in reader: 
    data = row.capitalize() 
    writer.writerow(data) 

input_file.close() 
output_file.close() 

我得到的錯誤是:

AttributeError: 'list' object has no attribute 'capitalize' 

回答

0

capitalize是字符串的方法,但不是列表的方法。

使用data = [x.capitalize() for x in row]代替

+0

這工作,但我不得不將它改爲'數據= [x行數] [x.capitalize()]' – drewd423

+0

對不起,錯字。我已經修復了 – waitingkuo

+0

請讓我知道-1的原因 – waitingkuo

4

它告訴你真相。 row是一個列表(每列一個元素)。您可以撥打,例如row[0].capitalize(),但您不能在列表上撥打capitalize(),因爲這不是有效的列表操作。

如果你想利用該行中的所有列,你可以這樣做:

row = [col.capitalize() for col in row] 

考慮:

>>> row = ['one','two','three'] 

這可以讓你:

>>> row = [col.capitalize() for col in row] 
>>> row 
['One', 'Two', 'Three'] 
+0

感謝,這是有益的。我的數據有很多行和1列,所以我不想使用行而不使用列? – drewd423

+0

您仍然無法將'.capitalize()'方法應用於列表 - 即使只有一列,它仍然是一個列表; 'capitalize'方法只適用於字符串。所以,你可以調用'row [0] .capitalize()',但不要'row.capitalize()'。 – larsks

+0

好的,這就是我在上面評論中所做的工作。 – drewd423

相關問題