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))