【发布时间】:2013-04-12 05:34:13
【问题描述】:
ValueError: invalid literal for int() with base 10: '405,000'
代码如下:
for d in csv.DictReader(open(c_name + '.csv'), delimiter=','):
global d_value
d_value = int(d['Debt Value'])
【问题讨论】:
ValueError: invalid literal for int() with base 10: '405,000'
代码如下:
for d in csv.DictReader(open(c_name + '.csv'), delimiter=','):
global d_value
d_value = int(d['Debt Value'])
【问题讨论】:
您的值中似乎有逗号,这就是您看到错误的原因。您可能希望通过执行以下操作来清理您的号码:
d_value = int(d['Debt Value'].replace(",", ""))
当您使用它时,最好在完成后关闭您的文件。您可以使用with statement 来确保它会在您阻止后关闭。
with open(c_name + ".csv") as csvfile:
for d in csv.DictReader(csvfile, delimiter=','):
global d_value
d_value = int(d['Debt Value'].replace(",", ""))
【讨论】:
405,000 不是有效的int。您要么需要删除该逗号:
d_value = int(d['Debt Value'].replace(',', ''))
import locale
# You might need to set a locale
# locale.setlocale(locale.LC_ALL, '')
d_value = locale.atoi(d['Debt Value'])
【讨论】: