Python:在写入csv时忽略字符串中的逗号
我有一个Python字典,我正在将其写入csv文件中。 该词典的格式如下:Python:在写入csv时忽略字符串中的逗号,python,csv,Python,Csv,我有一个Python字典,我正在将其写入csv文件中。 该词典的格式如下: {'title': u'A Preface to Democratic Theory.', 'year': u'1957'} {'title': u'Joseph A. Schumpeter, Capitalism, Socialism, Democracy, New York 1942', 'year': None} 问题是标题中的“逗号”。由于键值中有逗号,csv将其拆分为不同的单元格。第一个牢房里有约瑟夫·熊彼
{'title': u'A Preface to Democratic Theory.', 'year': u'1957'}
{'title': u'Joseph A. Schumpeter, Capitalism, Socialism, Democracy, New York 1942', 'year': None}
问题是标题中的“逗号”。由于键值中有逗号,csv将其拆分为不同的单元格。第一个牢房里有约瑟夫·熊彼特,第二个牢房里有资本主义,依此类推。
以下是我编写csv文件的代码:
def make_csv(mydict):
with open('mydata.csv', 'a') as f:
writer = csv.DictWriter(f,fieldnames=[""], delimiter=',')
writer.writeheader()
[f.write('{1},'.format(key, normalize(value))) for key, value in mydict.items()]
有人能帮忙吗?为什么不指定
字段名
并使用DictWriter
的writerow
方法呢
如果不需要标题,可以跳过writeheader
:
def make_csv(list_of_dicts):
with open('mydata.csv', 'a') as f:
writer = csv.DictWriter(f,fieldnames=["title", "year"], delimiter=',')
writer.writerows(list_of_dicts)
将dict列表作为参数传递给函数,并使用
writerows
方法一次写入所有数据。为什么要忽略writer对象?如果您正确使用writer.writerow()
将引用带逗号的值。为什么设置fieldnames=[“”]
?writer=csv.DictWriter(f,fieldnames=['title','year'])
,然后writer.writerow(mydict)
。不要每次都重新打开文件也会有帮助;打开文件一次,创建一次DictWriter
,然后继续使用它写出dict
行。@Martijin:我在“附加”模式下写作,因为标题被附加到每一行。这就是为什么现在我把它留空了,只需删除writer.writeheader()
调用即可。