int的文字无效 - 从CSV文件获取原始数据

时间:2016-01-12 13:52:34

标签: python csv input format

我有一个CSV文件,其中一行是字符串列表:

['1', '2', '3', '4']

我通读了这样的文件:

data = sys.argv[1]
with open(data, 'rb') as csvfile:

    query = csv.reader(csvfile, delimiter=',', skipinitialspace=True)

    for row in range(23):
            if row == 1:
            date = next(query)
        elif row == 11:
            cores = next(query) # Problem in this line
        elif row == 13:
            time_interval = next(query)
        elif row == 17:
            number_cores = next(query)
        else:
            next(query)

但是当我这样做时,我没有得到准确的界限。相反,我得到:

["['1'", "'2'", "'3'", "'4']"]

这样,我遇到的问题是我无法将每个元素转换为带有map的int。

我收到以下错误:

ValueError: invalid literal for int() with base 10: 2['1'" 

我想我需要摆脱引号“”以及第一个和最后一个[]符号。我一直在努力,但没有成功。

希望我已经正确解释了自己。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您的CSV解析器(正确地)将方括号和单引号视为字段的一部分。您共享的行是有效的CSV行,但不是您想要的方式。你想要的一行是:

1,2,3,4

请注意,没有方括号,也没有引号。对于此行,您的CSV解析器可能会返回列表:

['1', '2', '3', '4']

如果您无法更改输入CSV的格式,我建议您不要使用CSV解析器。

只是要强调:问题可能在于如何创建CSV,而不是如何阅读它。