2016-07-25 133 views
1

我試圖過濾第0123列數字0.101.00之間的數字Day.csv。但是,一些這些細胞的空白且完全沒有數量和導致錯誤:忽略空格/空白單元與過濾器

ValueError: could not convert string to float:

這裏是我的嘗試:

reader = csv.reader(open("AllData.csv"), delimiter=',') 
    filteredDay = filter(lambda p:0.10 <= float(p[23]) <= 1.00, reader) 
    csv.writer(open(r"{}\Day.csv".format(queue),'w',newline =''), 
       delimiter=',').writerows(filteredDay) 

回答

3

想必您因此需要您的篩選器以返回False時單元格不包含任何值?嘗試:

filteredDay = filter(lambda p: p[23] != "" and 
           0.10 <= float(p[23]) <= 1.00, reader) 
2

可以使用三元條件返回False爲空白:

filteredDay = filter(lambda p: 0.10 <= float(p[23]) <= 1.00 if p[23] != '' 
           else False, reader) 
#               ^^^^^^^^^^^^^^ 
+0

'其他FALSE'通常是一個很好的線索,你的布爾表達式,可以更有效地改寫 – holdenweb

+0

@holdenweb是的,這是正確的。通過使用表達式本身 –