使用过滤器忽略空/空单元格

时间:2016-07-25 14:10:40

标签: python csv lambda

我尝试使用0.101.00之间的数字过滤第22列到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)

2 个答案:

答案 0 :(得分:3)

据推测,当相关单元格中没有值时,您需要使用过滤器返回False吗?尝试:

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

答案 1 :(得分:2)

您可以使用三元条件返回空白False

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