Python:阻止将引号写入CSV

时间:2018-05-16 10:48:14

标签: python list

我正在创建一个使用CSV文件的保存/加载系统。平均CSV保存文件如下所示:

name1a,RGB,1,|[0, 0, 1]|
name2a,RGB,1,|[0, 1, 0]|
name3a,RGB,1,|[0, 1, 1]|
name1b,RGB,2,|[0, 0, 1]|
Head2b,RGB,2,|[0, 1, 0]|
Head3b,RGB,2,|[0, 1, 1]|

|之间的最后一项是指代码,并存储为一个项目(| s生成一个字符串文字而不是3个项目)。我保存这样的文件:

writer.writerow(name, type, slaveNumber, '|' + str(fix.code) + '|'])

其中code是一个列表,例如[0, 1, 1]

我希望得到这样的东西:

Head3b,RGB,2,|[0, 1, 1]|

但我得到了:

Head3b,RGB,2,|"[0, 1, 1]"|

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用escapechar=' ', quoting=csv.QUOTE_NONE

<强>实施例

import csv
with open(filename2, "w") as outfile:
    writer = csv.writer(outfile, escapechar=' ', quoting=csv.QUOTE_NONE)
    writer.writerow(["Head3b","RGB",2,"|",[0, 1, 1],"|"])

    #or writer.writerow(["Head3b","RGB",2,"|["+ ",".join(list(map(str, [0, 1, 1]))) +"]|"])

答案 1 :(得分:0)

无法重现,但csv模块非常智能,可在需要时添加引号:

import csv

with open("file.csv", "w", newline="") as fd:
    writer = csv.writer(quotechar = "|"
    writer.write("name1a","RGB",1,str([0, 0, 1]))

文件内容符合预期:

name1a,RGB,1,|[0, 0, 1]|