我的数据看起来像这样:
data = [
[" trailing space", 19, 100],
[" ", 19, 100],
]
writer = csv.writer(csv_filename, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
输出
trailing space,19,100
,19,100
我想要什么
" trailing space",19,100
" ",19,100
Python 默认 CSV 编写器可以选择“QUOTE_MINIMAL”,但它不包括引用带有额外空格的字符串。就我而言,这些空白实际上很关键,但如果不引用,读者(如 libre-office)就会删除未引用的空格。
是否有任何内置选项或快速廉价的方法来告诉作者用空格引用空字符串?
此外,“QUOTE_NONNUMERIC”引用太多。实际数据很大(几百兆字节,其中 60% - 70% 是字符串)。这可能听起来很愚蠢,但我正在尝试通过最小化引号来减小 csv 大小。
最佳答案
这有点像黑客,但实现这一目标的一种方法可能是
df.to_csv(quoting=csv.QUOTE_MINIMAL, escapechar=' ')
这不是文档,但 QUOTE_MINIMAL
似乎引用了包含 escapechar
的字段,尽管它没有任何效果(因为 quoting
不是 NONE
和 双引号
默认为 True
)
关于Python CSV 编写器用额外的空格引用字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36733181/