【发布时间】:2016-01-05 22:48:52
【问题描述】:
我有一个函数可以读取 CSV,检查行中的值,如果一切正常,它会将行写入新的 CSV 文件。我在主函数中调用了一些验证函数来检查行的值和格式。
我正在尝试以某种方式实现我的 main 函数,以便当我调用其他验证函数并且某些内容没有检查出来时,我会完全跳过编写该行。
#main function
for row in reader:
try:
row['amnt'] = divisible_by_5(row['amnt'])
row['issue_d'] = date_to_iso(row['issue_d'])
writer.writerow(row)
except:
continue
#Validation function
def divisible_by_5(value):
try:
float_value = float(value)
if float_value % 5 == 0 and float_value != 0:
return float_value
else:
raise ValueError
except ValueError:
return None
目前,作者仍在编写应该跳过的行。例如,如果一个数字不能被 5 整除,作者不会跳过该行,而是直接写 ''。
那么,如何在我的 for 循环中处理 divisible_by_5 中引发的异常 (ValueError),这样我就不会编写引发异常的行?
【问题讨论】:
-
您能否更清楚地了解您所期望的和无效的?问题是什么?