2011-07-29 43 views
1

我想讀取python中的csv文件,以便我可以使用numpy.average在其中一列中找到平均值。 我的腳本是這樣的:讀取python中的csv文件時的整數

import os 
import numpy 
import csv 

listing = os.listdir('/path/to/directory/of/files/i/need') 
os.chdir('/path/to/directory/of/files/i/need') 


for file in listing[1:]:  
    r = csv.reader(open(file, 'rU')) 
    for row in r: 
     if len(row)<2:continue 
     if float(row[2]) <=0.05: 
      avg = numpy.average(float(row[2])) 
    print avg 

,但我不斷收到錯誤ValueError異常:無效的文字浮法()。 csv閱讀器似乎正在讀取數字作爲字符串,並且不允許我將其轉換爲浮點數。有什麼建議麼?

+0

您能否提供包含腳本扼流器值之一的csv文件中的示例? – thegrinner

+0

我想你已經傳遞了一個空字符串,所以你需要添加一個簡單的檢查 - 'if row [2] .strip()和float(row [2])<= 0.05:' –

+0

@Artisom:這將導致錯誤消息「float()的空字符串」,而不是「float()的無效文字」。 –

回答

2

所作的評論來看,你的程序運行與頭的問題。這

兩種解決方案是使用r.next(),它跳過一條線,你for循環之前,或使用DictReader類。 DictReader類的優點在於,您可以將每行視爲字典而不是元組,這在某些情況下可能會提高可讀性,但您必須在構造函數中將頭列表傳遞給它。

0

變化:

float(row[2]) 

到:

float(row[2].strip("'\""))