ValueError异常转换成int通过getline.linecache

问题描述:

检索线时,这是我在这里的第一条消息,我希望我不会犯任何错误。ValueError异常转换成int通过getline.linecache

我写一个Python脚本2.7从作为外部输入文件中提供的线的长列表执行线之间的比较。其中一些行只包含数字,在那些我通过getline.linecache检索后执行简单的总和。

我的问题是一定数量的我正在错误的行后:

ValueError: invalid literal for int() with base 10 

我明白,不知怎的,这与事实有一些问题,当我尝试转换做行检索到整数类型,但根据我读的每一行应该从内存数据库中检索作为一个字符串,并且的确如果我试图打印检索到的值的类型,我得到str。我印刷有问题的值,以便理解为什么他们未能被转换为int:在第i个包含一些语义错误(我正在一些错线,将其含字母,这当然未能被转换为int),但我仍然只能看到数字字符串的错误。在所有这些数字串的,我试过len(linecache.getline('input', line_n)),看是否有多余的字符存在,但我发现“\ n”,它从海峡到int转换时不给任何问题。

我的输入文件是由一系列线而完成的,一些数值一些不;这里有几行:

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

例如,第4行可以检索,但不能转换为int。我如何将str转换为int而不会出错?

我找到了解决办法!添加一个“0”字符串的开始解决问题(我不知道为什么,有问题的行不为空):

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

在这里看到:Trouble converting string to int in Django/Python