当字符串被字符串封装时,Python csv.reader

时间:2013-07-24 14:16:41

标签: python csv

我正在尝试读取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文件?

1 个答案:

答案 0 :(得分: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()功能以适合您的特定文件内容。如果还有围绕列的引号,则可以从行的开头和结尾删除一个引用,例如。