在 csv 中修复开头和中间带有双引号的字符串的额外双引号?



尝试将行写入csv文件。在字符串的开头和中间添加带有双引号的字符串时,当我以.txt打开它时,我会得到额外的双引号,但以.xlsx打开时没有问题。

我已经尝试了quoteting=QUOTE_NONEquotechar='//' 和escapechar='//',但无法弄清楚什么有效。

代码如下:

import csv
csv_file = open('file.csv', 'w', newline='')
file_writer = csv.writer(csv_file)
file_writer.writerow(['Name', 'Search term'])
name = 'Patrick Fox'
search_term = '"%s" mp' % name
file_writer.writerow([name, search_term])

^ 问题出在search_term上。 .txt和.xlsx的预期输出为"帕特里克·福克斯"mp。 实际输出为">"帕特里克·福克斯"mp">.txt

我认为你不能,因为分隔符后面的双引号将被视为 XLS 格式的特殊引号,读者不会显示它,但可以在原始格式上看到(作为文本文件)。 所以我认为你有两个选择:

使用单引号而不是双引号:

import csv
csv_file = open('file.csv', 'w', newline='')
file_writer = csv.writer(csv_file)
file_writer.writerow(['Name', 'Search term'])
name = 'Patrick Fox'
search_term = '{!r} mp '.format(name)
file_writer.writerow([name, search_term])

另一种选择是在第二列中添加单个空格字符。另外,我将quoting设置为None.您可以在此处找到有关 CSV 格式的更多信息。

import csv

csv_file = open('file.csv', 'w', newline='')
file_writer = csv.writer(
csv_file, quoting=csv.QUOTE_NONE, quotechar='\')
file_writer.writerow(['Name', 'Search term'])
name = 'Patrick Fox'
search_term = ' "{!s}" mp '.format(name)
file_writer.writerow([name, search_term])

最新更新