我在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上的文本帶有逗號。 –