我正在创建一个使用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]"|
我该如何解决这个问题?
答案 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]|