Python 提供了 csv.DictWriter 用于输出 CSV 到文件。 将 CSV 输出到字符串或标准输出的最简单方法是什么?
例如,给定一个这样的二维数组:
[["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 没有。快速查看 wikipedia page on CSV 它似乎 Mathematica 是错误的。)
一种方法是使用 csv.DictWriter 写入临时文件并使用 csv.DictReader 读回。 什么是更好的方法?
TSV 而不是 CSV
我还想到,我并不热衷于 CSV。 TSV 会消除分隔符和引号带来的许多麻烦: 只需在二维数组的条目中用空格替换制表符,然后散布制表符和换行符即可。 让我们在答案中包括 TSV 和 CSV 的解决方案,以使其对 future 的搜索者尽可能有用。
最佳答案
为此我们使用 StringIO
myFakeFile = StringIO.StringIO()
wtr = csv.DictWriter( myFakeFile, headings )
...
myFakeFile.getvalue()
通常有效。
关于python - 在 Python 中将数组转换为 CSV/TSV 格式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768810/