删除空白Python编写器

时间:2016-10-26 00:58:42

标签: python csv

我在字典中有以下结构:

 self._results = {'key1':'1,2,3','key2':'5,6,7'}

我正在使用csv writerows()将字典中的记录写入文件:

filewriter = csv.writer(
          csvfile,
          quoting=csv.QUOTE_NONE,
          delimiter=',',
          quotechar='',
          escapechar=' ')
      filewriter.writerows(self._results.items())

不幸的是我得到以下内容:

key1,1 ,2 ,3
key2,4 ,5 ,6

如果我删除escapechar或将其更改为''我得到:

Error: need to escape, but no escapechar set

有什么建议吗?

我之后可以通过操作CSV文件来删除空格,但理想情况下我想在一个地方进行所有文本操作。

1 个答案:

答案 0 :(得分:3)

您已停用报价。因此,如果没有转义字符,则无法输出逗号;他们被误认为是CSV格式的字段分隔符。您需要提供某种转义字符,或允许引用(允许引用QUOTE_MINIMAL是默认值)。

如果您的目标是123在结果中是单独的字段,则不应将它们存储为{中逗号分隔前的字符串{1}},因为那是dict的工作,并且试图为它做好工作只意味着与csv作战并冒着逻辑错误的风险,这使得无法正确地往返数据。

如果它们是单个逻辑字段,则允许引用。如果它们不止一个字段,那么将csv构建为dict dict {list如果值是逐个构建的,则defaultdict(list)是有用的),然后输出原始序列,不是部分预先格式化的文本:

# Define values as lists, not strings
self._results = {'key1':[1,2,3],'key2':[5,6,7]}

# Wrap k in list and concatenate v to make four item list
filewriter.writerows([k] + v for k, v in self._results.items())