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

问题描述 投票:0回答:1

我正在使用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”

我相信double-qoutes来自我生成列表元素的方式,但是无论是在列表构造中还是在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)
python-3.x list csv double-quotes
1个回答
0
投票

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

通过自行进行字符串格式化并添加逗号,您正在复制CSV模块的功能,因此会得到不需要的行为。它期望每行都有一个可迭代的列表,然后将添加列分隔符并对其本身加引号。试试这个:

csv_rows.append([f"{switchname}.{domain}",switchip,ticket])
© www.soinside.com 2019 - 2024. All rights reserved.