在python中制作csv文件时添加双引号

Dib*_*ble 2 python csv visual-studio-code

import csv
with open('innovators.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(["SN", "Name", "Contribution"])
    writer.writerow([1, "Linus Torvalds", "Linux Kernel"])
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

SN, Name, Contribution
1, Linus Torvalds, Linux Kernel
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

SN, Name, Contribution
1, Linus Torvalds, "Linux Kernel"
Run Code Online (Sandbox Code Playgroud)

所以,我尝试了

writer.writerow([1, "Linus Torvalds", "\"Linux Kernel\""])
Run Code Online (Sandbox Code Playgroud)

但这只是使它成为:

1, Linus Torvalds, ""Linux Kernel""
Run Code Online (Sandbox Code Playgroud)

我正在使用 Visual Studio Code 和 python 3,不知道如何让它输出带双引号的单词

Jas*_*nM1 7

您可以使用 csv.writer 的引用参数来控制引用的级别。如果您只想引用所有值,请使用csv.QUOTE_ALL

引用级别:

csv.QUOTE_ALL
指示 writer 对象引用所有字段。

csv.QUOTE_NONNUMERIC
指示编写器对象引用所有非数字字段。
指示读者将所有未引用的字段转换为 float 类型。

csv.QUOTE_MINIMAL(默认)
指示编写器对象仅引用包含特殊字符(例如分隔符、quotechar 或行终止符中的任何字符)的字段。

csv.QUOTE_NONE
指示编写器对象从不引用字段。

例子:

import csv

with open('innovators.csv', 'w', newline='') as file:
    writer = csv.writer(file, quoting=csv.QUOTE_NONNUMERIC)
    writer.writerow(["SN", "Name", "Contribution"])
    writer.writerow([1, "Linus Torvalds", "Linux Kernel"])
Run Code Online (Sandbox Code Playgroud)

输出:

"SN","Name","Contribution"
1,"Linus Torvalds","Linux Kernel"
Run Code Online (Sandbox Code Playgroud)

请注意,在输出中,所有字符串都被引用,而数字没有被引用。

如果使用quoting=csv.QUOTE_MINIMAL则输出如下。所有字符串都没有换行符或转义字符,因此不需要引号。

SN,Name,Contribution
1,Linus Torvalds,Linux Kernel
Run Code Online (Sandbox Code Playgroud)