我想把[1,2,'a','He said "what do you mean?"']
这样的数据转换成CSV格式的字符串。
通常情况下,人们会使用csv.writer()
来实现这一点,因为它处理所有疯狂的边缘情况(逗号转义、引号转义、CSV方言等),关键是csv.writer()
希望输出到文件对象,而不是字符串。
我现在的解决方案是这个有点老套的函数:
def CSV_String_Writeline(data):
class Dummy_Writer:
def write(self,instring):
self.outstring = instring.strip("\r\n")
dw = Dummy_Writer()
csv_w = csv.writer( dw )
csv_w.writerow(data)
return dw.outstring
有谁能给出一个更优雅的解决方案,仍然处理好边缘案件?
编辑:以下是我最后的做法:
def csv2string(data):
si = StringIO.StringIO()
cw = csv.writer(si)
cw.writerow(data)
return si.getvalue().strip('\r\n')
你可以用^{} 代替你自己的
Dummy_Writer
:还有^{} ,这是
StringIO
类的一个更快版本。我发现答案,总之,有点混乱。对于Python 2,这种用法对我有效:
在Python 3中:
对于Python2,一些细节需要稍加更改:
相关问题 更多 >
编程相关推荐