1

这是我在这里的第一条信息,希望我不会犯任何错误。

我正在编写一个 python 2.7 脚本,该脚本在作为外部输入文件提供的一长串行中的行之间进行比较。其中一些行只包含数字,在这些行上我通过检索它们后执行简单的求和getline.linecache

我的问题是,经过一定数量的行后,我收到了错误:

ValueError: invalid literal for int() with base 10

我确实明白,这与以下事实有关事实上,如果我尝试打印检索到的值的类型,我会得到 str。我打印了有问题的值,以了解为什么它们无法转换为 int:起初我包含了一些语义错误(我使用了一些错误的行,其中包含字母,这当然无法转换为 int),但我仍然只在数字字符串上得到错误。在所有这些数字字符串上,我试图len(linecache.getline('input', line_n))查看是否存在任何额外的字符,但我只是找到了 '\n',这在从 str 转换为 int 时不会出现任何问题。

我的输入文件是由一系列行组成的,有些是数字,有些不是;这里有几行:

1
id3021-a
1
129485768
129485769
2
id2034
102
944709842
944709848

例如,此处的第 4 行可以检索,但不能转换为 int。我怎样才能将 str 转换为 int 而不会出错?

4

1 回答 1

0

我找到了解决方案!在字符串的开头添加“0”可以解决问题(我不知道为什么,有问题的行不是空的):

int('0' + linecache.getline('input', line_n))

请参阅此处:在 Django/Python 中将字符串转换为 int 时遇到问题

于 2013-07-16T08:56:52.713 回答