我的数据看起来像这样:

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的大小。

最佳答案

为什么不只使用QUOTE_NONNUMERIC?这将引用所有字符串,不仅是带空格的字符串,而且当然也会引用那些字符串。

with open("quote.csv", "w", newline="") as fp:
    writer = csv.writer(fp, quoting=csv.QUOTE_NONNUMERIC)
    writer.writerows(data)


给我

(3.5.1) dsm@notebook:~/coding$ cat quote.csv
" leading space",19,100
" ",19,100

关于python - Python CSV编写器引用带多余空格的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36733181/

10-12 07:37