python - 在 Python 中将数组转换为 CSV/TSV 格式的字符串

标签 python string text csv

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/

相关文章:

python - Pandas 数据帧如何存储在内存中?

python - 如何使用缓存过滤器?

c - 我想使用冒泡排序对字符串中的字符进行排序。这段代码有什么问题?

css - 更改可点击框中文本的颜色

linux - 如何选择文件的其余部分,不包括 linux 中的某些行?

python - 使用 python -c 开关的长程序

python - SQLAlchemy 匹配子句

c# - 在 C# 中计算多语言字符串长度以存储在 Oracle VARCHAR2 字段中

arrays - Swift中基于最后一个字符的字符串排序

string - 识别与 R 中略有不同的字符串