我正在尝试使用 csv.DictReader 读取文件
我有一个应该是整数的字段。如果它是空的,我将把它设置为 DEFAULT
如果它是一个整数,我什么都不做。如果它不是一个整数,我检查它是否是一个带引号的整数(如'1234')
。如果是这样,我将把它转换为整数。否则一个异常(exception)是提出。
如果它为空或它是一个整数,它会按预期工作。现在如果它是一个带引号的整数(如'1234')
,则会引发异常integer invalid literal for float( ): '1234'
.
在这种情况下不应该引发异常。
我觉得跟DictReader读取csv文件的方式有关系。 其他一切都很好。请帮忙
if not line[key]:
line[key]='DEFAULT'
elif not isinstance(line[key], (int, long, float)) :
try:
line[key]=float(line[key])
except Exception,e :
print e
最佳答案
问题是单引号是字符串的一部分:
In [7]: float("'1234'")
ValueError: invalid literal for float(): '1234'
如果你删除它们,事情应该会起作用:
In [8]: float("'1234'".strip("'"))
Out[9]: 1234.0
关于python - 转换为 float 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6859991/