【发布时间】:2018-04-12 08:17:37
【问题描述】:
我正在尝试使用 python 的 csv 标准库模块来生成逗号分隔值 (csv) 文件。
它不允许第一行为空白。更烦人的是,它对第一行的处理与其他行不同,因此空列表在一种情况下会给出一个空字符串(“”),然后是一个空行:
import csv
import io
def make_csv(rows):
with io.StringIO(newline='') as sout:
writer = csv.writer(sout, quoting=csv.QUOTE_MINIMAL)
writer.writerows(rows)
return sout.getvalue()
根据上述定义,解释器会话可能如下所示:
>>> make_csv([[''], ['']]) # (only the) first line has quoted empty string
'""\r\n\r\n'
>>> make_csv([['A'], ['A']]) # expected: same input row, same output row
'A\r\nA\r\n'
为什么这个引用的空字符串只出现在第一行?有什么办法可以阻止它,或者至少获得更一致的行为?
更新:这是一个在 2017 年 12 月报告为 https://bugs.python.org/issue32255 的错误,并由提交 https://github.com/python/cpython/commit/2001900b0c02a397d8cf1d776a7cc7fcb2a463e3 解决,该错误包含在 3.6.5 版本中
【问题讨论】:
-
QUOTE_MINIMAL 的值是多少
-
应该是
csv.QUOTE_MINIMAL -
无法复制。我得到 2 行引用:
'""\r\n""\r\n' -
@zipa 谢谢,改了
-
@Jean-FrançoisFabre 哪个 python 版本?我正在使用 3.6.3
标签: python python-3.x csv