Python 使用筛选器忽略空/空单元格
我正在尝试将数字介于0.10和1.00之间的第22列过滤到Day.csv中。但其中一些单元格是空白的,没有任何数字,并导致错误: ValueError:无法将字符串转换为浮点: 以下是我尝试过的:Python 使用筛选器忽略空/空单元格,python,csv,lambda,Python,Csv,Lambda,我正在尝试将数字介于0.10和1.00之间的第22列过滤到Day.csv中。但其中一些单元格是空白的,没有任何数字,并导致错误: ValueError:无法将字符串转换为浮点: 以下是我尝试过的: reader = csv.reader(open("AllData.csv"), delimiter=',') filteredDay = filter(lambda p:0.10 <= float(p[23]) <= 1.00, reader) csv.writer(o
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)
可以使用三元条件为空格返回False:
filteredDay = filter(lambda p: 0.10 <= float(p[23]) <= 1.00 if p[23] != ''
else False, reader)
# ^^^^^^^^^^^^^^
可以使用三元条件为空格返回False:
filteredDay = filter(lambda p: 0.10 <= float(p[23]) <= 1.00 if p[23] != ''
else False, reader)
# ^^^^^^^^^^^^^^
因此,当相关单元格不包含值时,您可能需要过滤器返回False?尝试:
filteredDay = filter(lambda p: p[23] != "" and
0.10 <= float(p[23]) <= 1.00, reader)
因此,当相关单元格不包含值时,您可能需要过滤器返回False?尝试:
filteredDay = filter(lambda p: p[23] != "" and
0.10 <= float(p[23]) <= 1.00, reader)
else False通常是一个很好的线索,表明布尔表达式可以更有效地使用rewritten@holdenweb是的,没错。通过使用表达式itselfelse False,通常可以很好地提示您的布尔表达式可以更高效地使用rewritten@holdenweb是的,没错。通过使用表达式本身