如何使用python在csv文件中写入包含逗号的列表?

时间:2018-12-12 03:50:55

标签: python list csv quote writer

列表包含以下数据,

  

['Obama','John Barta','IN,33,33','444','']

我正在尝试使用以下代码将此数据写入csv文件中,

with open(output_file, 'w') as writeFile:
    writer = csv.writer(writeFile, delimiter=',', quotechar="'", quoting=csv.QUOTE_NONE)
    writer.writerow(colValues)

但是低于csv文件中的输出,

  

“奥巴马”,“约翰·巴尔塔”,“” IN,33、33”,“ 444”,“”

我不希望在'“ IN,33,33”'之间使用单引号。

所需的输出:

  

“奥巴马”,“约翰·巴塔”,“ IN,33、33”,“ 444”,“”

3 个答案:

答案 0 :(得分:2)

如果您从quotechar调用中消除了csv.writer参数,它应该会为您提供所需的行为。例如,您的函数调用将变为

writer = csv.writer(writeFile, delimiter=',', quoting=csv.QUOTE_NONE)

quotechar参数是出现delimiter或其他特殊字符时的位置。

答案 1 :(得分:1)

从示例输出中,您似乎想引用所有字段。因此,直接的方法是:

writer = csv.writer(writeFile, delimiter=',',
               quotechar='"', quoting=csv.QUOTE_ALL)

我也将quotechar更改为双引号,因为这也在您的示例输出中。

答案 2 :(得分:0)

也许这太简单了,但是使用默认设置write,read会返回原始列表:

import csv

col_values = ['Obama', 'John Barta', 'IN, 33, 33', '444', '']

with open('data.csv', 'w') as writeFile:
    writer = csv.writer(writeFile)
    writer.writerow(col_values)

#=> Obama,John Barta,"IN, 33, 33",444,

with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    p_list = list(reader)
print(p_list)
#=> [['Obama', 'John Barta', 'IN, 33, 33', '444', '']]