繁体   English   中英

删除空白Python writerows

[英]Remove white space Python writerows

我在字典中具有以下结构:

 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文件来删除空格,但理想情况下,我希望将所有文本处理都放在一个位置。

您禁用了报价。 因此,如果没有转义字符,它将无法输出逗号。 他们会误认为CSV格式的字段分隔符。 您需要提供某种转义符,或者允许使用引号(默认情况下允许使用QUOTE_MINIMAL进行引号)。

如果你的目标是有123是在结果不同的领域,你不应该将其存储作为预逗号的分隔字符串dict ,因为这是csv的工作,并试图完成其工作的这仅意味着与csv对抗,并冒使无法正确往返数据的逻辑错误的风险。

如果它们是单个逻辑字段,则允许引用。 如果它们不止一个字段,则将dict构建为listdict (如果零散构建值,则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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM