ValueError:基数10的无效文字转换为int():Python
我有一段代码,我正在从一个csv文件中读取数据,并把内容解析成一个列表:
import csv
finput = input.reader(open(path,'rb'),delimiter=',',quotechar='|')
print finput[0]
输出结果是:
['"1239"', '"2249.00"', '"1"', '"3"', '"2011-02-20"']
现在我想提取出数字1239,也就是第一个元素,所以我用finput[0][0]来打印,结果是"1239"
。现在如果我把这个转换成整数:
el = int(finput[0][0])
我遇到了这个错误:
ValueError: invalid literal for int() with base 10: '"1239"'
为什么会有那些双引号呢?
有没有什么简单的方法可以提取出整数1239
?
2 个回答
1
使用 strip()
方法。
el = int(finput[0][0].strip('"'))
>>> a = '"1234"'
>>> a
'"1234"'
>>> a.strip('"')
'1234'
>>> int(a.strip('"'))
1234
strip()
方法的说明如下:
这个方法会返回一个新的字符串,去掉了开头和结尾的字符。如果没有提供要去掉的字符,或者提供的是 None,那么它会去掉空格。如果提供了字符,并且不是 None,那么这些字符必须是一个字符串;这个方法会把这些字符从调用它的字符串的两端去掉。
7
简单来说:
int(finput[0][0].strip('"'))
但是你为什么把 quotechar
设置成 |
呢?你确定它不应该是 "
吗?如果把它设置成 "
,你应该能得到没有引号的字符串。