Python提供csv.DictWriter用于将CSV输出到文件。 将CSV输出到字符串或stdout的最简单方法是什么?
例如,给定像这样的2D数组:
[["a b c", "1,2,3"],
["i \"comma-heart\" you", "i \",heart\" u, too"]]
返回以下字符串:
"a b c, \"1, 2, 3\"\n\"i \"\"comma-heart\"\" you\", \"i \"\",heart\"\" u, too\""
打印时看起来像这样:
a b c, "1,2,3"
"i ""heart"" you", "i "",heart"" u, too"
(我正在使用csv.DictWriter的话,这实际上是将该数组输出为CSV的规范方式.Excel会以这种方式正确解析它,尽管Mathematica没有。从快速查看{{ 3}}似乎Mathematica是错误的。)
一种方法是使用csv.DictWriter写入临时文件,然后使用csv.DictReader读回。 什么是更好的方式?
我也发现我并不喜欢CSV。 TSV会因分隔符而引发很多令人头疼的问题并且报价会消失: 只需在2D数组的条目中用空格替换制表符,然后只是穿插制表符和换行符就完成了。 让我们在答案中包含TSV和CSV的解决方案,以使其对未来的搜索者尽可能有用。
答案 0 :(得分:5)
我们将StringIO用于此
myFakeFile = StringIO.StringIO()
wtr = csv.DictWriter( myFakeFile, headings )
...
myFakeFile.getvalue()
通常有效。