我在MongoDB中创建了一个数据库,其中包含基于tweepy和NLTK的tweet和感伤分析。在使用MongoXport创建一个带有MongoDB中存储的数据库数据集的CSV文件后,我决定探索更灵活的其他选项(特别是使用其他分隔符而不是“昏迷”),例如,使用Python本身来生成CSV文件。到目前为止,我可以成功打印数据集,纠正ASCII和Unicode问题并使用“|”作为分隔符,但是我很难从打印结果创建一个CSV文件。到目前为止的代码是如下:如何使用Python从MongoDB tweet数据库创建.csv文件
import json
import csv
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client['twitter_db_stream_1']
collection = db['twitter_collection']
data_python = collection.find({"user.location":{"$exists":True},"user.location":{"$ne":"null"}},{"created_at":1,"text":1,"user.name":1,"user.location":1,"geo.coordinates":1,"sentiment_value":1,"confidence_value":1})
for data in data_python:
print(data['created_at'],'|',data['text'].encode('utf8'),'|',data['user']['name'].encode('utf8'),'|',data['user']['location'],'|',data['sentiment_value'],'|',data['confidence_value'])
的打印结果如下:
Tue Apr 18 06:51:58 +0000 2017 | b'Samsung Galaxy S8 International Giveaway @androidauth #giveaway | b'Matt Torok' | None | pos | 1.0
我尝试添加下面的一段使用csv.writer代码,基于从tutorias一些实例中,但它不工作...
csv_file = open('Sentiment_Analisys.csv', 'wb')
writer = csv.writer(csv_file)
fields = [["created_at"],["text"],["user.name"],["user.location"],["sentiment_value"],["confidential_value"]] #field names
writer.writerow(fields)
for data in data_python:
writer.writerow(data['created_at'],data['text'].encode('utf8'),data['user']['name'].encode('utf8'),data['user']['location'],data['sentiment_value'],data['confidence_value'])
csv_file.close()
请问,有人可以给我一些指导,如何从上面的打印结果创建此CSV文件?
非常感谢!
你可以转换从'data_python'到'str'的所有东西,只需用逗号打印它? – PYA
为什么要从打印结果创建CSV?还是你打算创建一个'|'分隔CSV? – Tanu
感谢您的评论朋友!我需要创建此CSV文件以便稍后在SQL数据库中使用它。要在SQL中将CSV文件作为平面文件源上传,有时候逗号不是有效的分隔符,特别是如果tweet上的文本带有逗号。 –