我在字典中有以下结构:
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文件来删除空格,但理想情况下我想在一个地方进行所有文本操作。
答案 0 :(得分:3)
您已停用报价。因此,如果没有转义字符,则无法输出逗号;他们被误认为是CSV格式的字段分隔符。您需要提供某种转义字符,或允许引用(允许引用QUOTE_MINIMAL
是默认值)。
如果您的目标是1
,2
和3
在结果中是单独的字段,则不应将它们存储为{中逗号分隔前的字符串{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())