我想把像[1,2,'a',他说的“你是什么意思?”]这样的数据转换成CSV格式的字符串
通常人们会使用csv.writer()进行此操作,因为它处理所有疯狂的边缘情况(逗号转义、引号转义、csv方言等)。关键是csv.writer()希望输出到文件对象,而不是字符串
我目前的解决方案是这个有点粗糙的函数:
def CSV\u String\u Writeline(数据):
类虚拟写入程序:
def写入(自、指令):
self.outstring=instring.strip(“\r\n”)
dw=虚拟写入程序()
csv_w=csv.writer(dw)
csv_w.writerow(数据)
返回dw.EXTRING
谁能给出一个更优雅的解决方案,仍然能够很好地处理边缘情况
编辑:以下是我最终做这件事的方式:
def csv2string(数据):
si=StringIO.StringIO()
cw=csv.writer(si)
cw.writerow(数据)
返回si.getvalue().strip(’\r\n’)
在Python 3中:
>&燃气轮机&燃气轮机;输入io
&燃气轮机&燃气轮机&燃气轮机;导入csv
&燃气轮机&燃气轮机&燃气轮机;输出=io.StringIO()
&燃气轮机&燃气轮机&燃气轮机;csvdata=[1,2,'a',他说“你是什么意思?”,“哇!\nWLINES!”]
&燃气轮机&燃气轮机&燃气轮机;writer=csv.writer(输出,quoting=csv.QUOTE_非数字)
&燃气轮机&燃气轮机&燃气轮机;writer.writerow(csvdata)
59
&燃气轮机&燃气轮机&燃气轮机;output.getvalue()
“1,2,”a,“他说”“你是什么意思?”,“哇!\n网络!”\r\n
Python 2的一些细节需要稍作更改:
>&燃气轮机&燃气轮机;输出=io.BytesIO()
&燃气轮机&燃气轮机&燃气轮机;writer=csv.writer(输出)
&燃气轮机&燃气轮机&燃气轮机;writer.writerow(csvdata)
57L
&燃气轮机&燃气轮机&燃气轮机;output.getvalue()
“1,2,a,”他说“你是什么意思?”,“哇!\n网络!”\r\n