Python3 在 CSV 输出中生成双引号字符串

Python3 producing double quoted string in CSV output

我正在使用 Python3 访问生成 json 输出的 EST/API。我必须从 API 调用中抓取一些数据并生成一个简单的 .csv 文件供另一个进程使用。 CSV 文件不应包含任何引号字符串。

所需的 csv 输出是这样的行(基本上是设备名称、IP 地址和票证#):

devicename.domain,1.1.1.1,ticket_number

但是我在我的 csv 文件中得到了这个:

"devicename.domain,1.1.1.1,ticket_number"

我相信双引号来自我生成列表元素的方式,但我似乎无法摆脱它们,无论是在列表构造中还是在 csv 输出中。我尝试了各种 'quoting=csv.QUOTE_NONE' ,但我无法摆脱 CSV 输出文件中的引号。很确定问题出在我首先格式化列表的方式上,但我碰壁了。

这是我的代码:

csv_rows = []
    domain="mydomain.com"
    ticket="ticket"

    # create a nested list element that contains the data scraped from json
    for switch in switches:
        switchname = switch["switch-name"]
        switchip = switch["ip"]
        csv_rows.append([f"{switchname}.{domain},{switchip},{ticket}"])
filename = f"{ticket}.csv"

with open(filename, 'w') as csvfile:
# creating a csv writer object
csvwriter = csv.writer(csvfile)
# writing the data rows
csvwriter.writerows(csv_rows)

引号是由 CSV 编写器添加的,因为它认为您希望将所有这些内容都放在一个列中,因此它用引号将整个字符串括起来,以转义您输入的逗号。

通过自己进行字符串格式化和添加逗号,您正在复制 CSV 模块的功能,因此会出现不需要的行为。它需要一个迭代器,例如每一行的列表,然后它会添加列分隔符并自己引用。试试这个:

csv_rows.append([f"{switchname}.{domain}",switchip,ticket])