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

时间:2011-10-25 22:07:47

标签: python file-io

我有以下代码。我正在读取csv并将其内容解析为列表:

import csv
finput = input.reader(open(path,'rb'),delimiter=',',quotechar='|')
print finput[0]

输出是:

['"1239"', '"2249.00"', '"1"', '"3"', '"2011-02-20"']

现在我想提取1239号码......第一个元素,因此print finput [0] [0]给出"1239"。现在,如果我将其转换为整数:

el = int(finput[0][0])

我收到此错误:

ValueError: invalid literal for int() with base 10: '"1239"'

为什么有双引号?

什么是提取整数1239的简洁方法?

2 个答案:

答案 0 :(得分:7)

简而言之:

int(finput[0][0].strip('"'))

但为什么要将quotechar设为|?你确定它不应该是"吗?设置为"后,您应该获得没有引号的字符串。

答案 1 :(得分:1)

使用strip()

el = int(finput[0][0].strip('"'))

>>> a = '"1234"'
>>> a
'"1234"'
>>> a.strip('"')
'1234'
>>> int(a.strip('"'))
1234

strip()的文档如下:

  

返回删除了前导和尾随字符的字符串副本。如果省略chars或None,则删除空格字符。如果给定而不是None,则字符必须是字符串;字符串中的字符将从调用此方法的字符串的两端剥离。