0

我正在尝试读取 csv 文件。

    with open(os.path.join(folder,mfile),'r') as csvfile:
        fileReads = csv.reader(csvfile, delimiter=',')

        for i, line in enumerate(fileReads):
            print 'line[{}] = {}'.format(i, line)

不幸的是,我的数据以以下格式包含在 CSV 文件中:

"val1, val2, val3"

(包括引号,不要问为什么会这样......)

这导致 csv.reader 将整行作为一个值返回 - 所以控制台的输出类似于

line[1] = ['val1,val2,val3']

正如预期的那样。

  • 如何正确读取此 CSV 文件?
4

1 回答 1

3

将文件包装在生成器函数中以去除引号:

def strip_quotes(iterable):
    for line in iterable:
        yield line.rstrip('\n').strip('"') + '\n'

然后使用该功能,如:

fileReads = csv.reader(strip_quotes(csvfile), delimiter=',')

该类csv.reader()很乐意接受任何可迭代的对象,而不仅仅是文件。

strip_quotes()可以调整该功能以适合您的特定文件内容。例如,如果列周围也有引号,则可以仅从行的开头和结尾删除一个引号。

于 2013-07-24T14:18:05.887 回答