在开始和中间使用双引号修复字符串的 csv 中的额外双引号?

Fixing extra double-quotes in csv for string with double-quote at start and middle?

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

我玩过 quoting=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 的预期输出都是 "Patrick Fox" mp。 实际输出为 """Patrick Fox"" mp" for .txt

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

使用单引号代替双引号:

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])

另一种选择是在第二列中添加一个 space 字符。此外,我将 quoting 设置为 None。您可以在 here.

中找到有关 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])