我正在使用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)
答案 0 :(得分:0)
引号是由CSV编写器添加的,因为它认为您希望将所有这些内容放在一个列中,因此它会将整个字符串括在引号中,以便转义您输入的逗号。
通过自己进行字符串格式化并添加逗号,您正在复制CSV模块的功能,因此会得到不需要的行为。它期望每行都有一个可迭代的列表,然后将添加列分隔符并对其本身加引号。试试这个:
np.frompyfunc