我有一个名为TwitterObject的类,它存储两个变量(post,sentiment)。我想以下列格式将此数据输出到CSV:
post,sentiment
'This is a twitter post', 'pos'
'This is another twitter post', 'neg'
非常感谢任何帮助。
谢谢!
def OutputCSV(csv_file):
csv_columns = ['post','sentiment']
with open(csv_file, 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
for TwitterObject.TwitterObject in ApplicationModel.ApplicationModel.getTwitterObjects():
writer.writerow(str(TwitterObject.TwitterObject.post))
Twitter对象
class TwitterObject(object):
def __init__(self, post, sentiment):
self.post = post
self.sentiment = sentiment
这是我得到的错误:
ValueError: dict contains fields not in fieldnames: 'R', 'T', ' ', '@', 'O', 'l', 'i', 'P', 'r', 'i', 'c', 'e', 'B', 'a', 't', 'e', 's', ':', ' ', 'G', 'r', 'a', 'n',
答案 0 :(得分:1)
谢谢你heinst&弗朗西斯科指出我的写作方向。使用你的代码,我得到了这样的工作:
@staticmethod
def OutputCSV(csv_file):
csv_columns = ['post','sentiment']
with open(csv_file, 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(csv_columns)
for TwitterObject.TwitterObject in ApplicationModel.ApplicationModel.getTwitterObjects():
writer.writerow({
TwitterObject.TwitterObject.post,
TwitterObject.TwitterObject.sentiment
})
答案 1 :(得分:0)
writer.writerow需要一个序列,并且你给它一个字符串,这就是为什么每个字母都是一个单独的字段。尝试类似:
writer.writerow({'post': str(TwitterObject.TwitterObject.post), 'sent': str(TwitterObject.TwitterObject. sentiment)})
答案 2 :(得分:0)
您已选择使用DictWriter,因此writerow
方法接受dict
作为参数。
您应该使用类似
的内容更改writerow
行
writer.writerow({
'post': TwitterObject.TwitterObject.post,
'sentiment': TwitterObject.TwitterObject.sentiment
})
答案 3 :(得分:-1)
python有一个csv编写器库:
import csv
with open('eggs.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])