这是我在这里的第一条消息,我希望我不会犯任何错误。
我正在编写一个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?
答案 0 :(得分:0)
我找到了解决方案!在字符串的开头添加“0”可以解决问题(我不知道为什么,有问题的行不是空的):
int('0' + linecache.getline('input', line_n))