Python 为什么';t DictWriter.writer是否向csv文件写入任何内容?
我想将一些数据写入csv文件。但除了标题外,什么也没写,标题是单词和数字。我的代码怎么了 这是我的密码Python 为什么';t DictWriter.writer是否向csv文件写入任何内容?,python,csv,Python,Csv,我想将一些数据写入csv文件。但除了标题外,什么也没写,标题是单词和数字。我的代码怎么了 这是我的密码 import os import csv csvFile = open('Trail.csv','w+') fieldname = ['words', 'number'] trialDict = {'apple':1, 'banana':4, 'cat':6} writer = csv.DictWriter(csvFile, fieldnames=fieldname, extrasactio
import os
import csv
csvFile = open('Trail.csv','w+')
fieldname = ['words', 'number']
trialDict = {'apple':1, 'banana':4, 'cat':6}
writer = csv.DictWriter(csvFile, fieldnames=fieldname, extrasaction='ignore')
writer.writeheader()
writer.writerow(trialDict)
csvFile.close()
我想要你的意思,我修改我的代码。但仍然存在一个问题
import os
import csv
csvFile = open('Trail.csv','w+')
fieldname = ['words', 'number']
trialDict = {'words':'apple', 'number':5, 'words':'banana','number':6, 'words':'cat', 'number':5}
writer = csv.DictWriter(csvFile, fieldnames=fieldname, extrasaction='ignore') writer.writeheader()
writer.writerow(trialDict)
csvFile.close()
输出变为:
word numbers
cat 5
如何将所有内容写入文件?我尝试了writerows
函数,但它返回了错误:
str对象没有属性get()
字段名是标题,您应该在dict中包含与标题对应的键,如果这是您的要求,则此代码应适用于:
import os
import csv
csvFile = open('Trail.csv','w+')
fieldname = ['apple', 'banana', 'cat']
trialDict = {'apple':1, 'banana':4, 'cat':6}
writer = csv.DictWriter(csvFile, fieldnames=fieldname, extrasaction='ignore')
writer.writeheader()
writer.writerow(trialDict)
csvFile.close()
这里真正的问题是,您正在使用TrialDict覆盖密钥,而它只使用
单词
和数字
的最后两个实例
>>> trialDict = {'words':'apple', 'number':5, 'words':'banana','number':6, 'words':'cat', 'number':5}
>>> trialDict
{'words': 'cat', 'number': 5}
您要做的是创建一个按单词计数的字典,只需编写键、值对:
fieldnames = ['words', 'number']
trialDict = {'apple': 5, 'banana': 6, 'cat': 5}
with open("Trial.csv", "w+") as f:
f.write(','.join(fieldnames) + '\n')
for word, number in trialDict.items():
f.write(word + ',' + str(number) + '\n')
您不需要使用
DictWriter
。标准的编写器
可以工作。按照以下步骤打开文件时,还要注意newline='
参数:
输出:
words,number
apple,1
banana,4
cat,6
要使用DictWriter
,您需要一个字典列表,其中包含作为标题值的键:
import csv
fieldname = ['words', 'number']
trialList = [{'words':'apple','number':1},
{'words':'banana','number':4},
{'words':'cat','number':6}]
with open('Trail.csv','w',newline='') as csvFile:
writer = csv.DictWriter(csvFile,fieldnames=fieldname)
writer.writeheader()
writer.writerows(trialList)
你期望它做什么?
trialDict
中没有一个键是'words'
或'number'
。您阅读了吗?我想OP希望标题/字段名是word
和number
。这个解决方案不能解决这个问题。
import csv
fieldname = ['words', 'number']
trialList = [{'words':'apple','number':1},
{'words':'banana','number':4},
{'words':'cat','number':6}]
with open('Trail.csv','w',newline='') as csvFile:
writer = csv.DictWriter(csvFile,fieldnames=fieldname)
writer.writeheader()
writer.writerows(trialList)