Python用双引号写csv文件:包含单引号的字符串

pgx2nnw8  于 12个月前  发布在  Python
关注(0)|答案(1)|浏览(133)

我在Python中使用csv.writer编写了一个csv文件。我想在字符串周围插入双引号,所以我向writer添加了quotechar属性。但是,问题是如果字符串包含单引号,则会出错。

list = []
list.append([1, "foo"])
list.append([2, "bar"])
list.append([3, "foo's bar"])

with open('list.csv', 'w') as f:
    writer = csv.writer(f, quotechar = "'")
    for row in list:
        row[1] = '\"' + row[1] + '\"'   
        writer.writerow(row)

使用上面的代码,我得到以下list.csv文件

1,"foo"
2,"bar"
3,'"foo''s bar"'

我希望第3行是"foo's bar",没有任何额外的单引号。如何正确地将双引号应用于包含单引号的字符串?

f5emj3cl

f5emj3cl1#

您可以使用quoting参数来处理在非数字列周围放置引号的问题。这也使您不必单独向行添加双引号。

with open('list.csv', 'w') as f:
    writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
    for row in list:
        writer.writerow(row)

这将写入所需的输出

1,"foo"
2,"bar"
3,"foo's bar"

相关问题