ValueError:基数10的无效文字转换为int():Python

1 投票
2 回答
2511 浏览
提问于 2025-04-17 05:00

我有一段代码,我正在从一个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 设置成 | 呢?你确定它不应该是 " 吗?如果把它设置成 ",你应该能得到没有引号的字符串。

撰写回答