我使用Twitter的流API生成了一个.json文件。因此,我的.json文件有多个推文被包含为断开连接的json对象。在使用'jsonlint'验证后,我不断收到EOF错误。有没有可能围绕这个问题的工作。我最终的目标是在关键字和主题标签的基础上直观地分析Twitter趋势。以下是我的代码:
import json
import pandas as pd
import matplotlib.pyplot as plt
tweets_data_path = 'import_requests.txt'
tweets_data = []
tweets_file = open(tweets_data_path, "r")
for line in tweets_file:
try:
tweet = json.loads(line)
tweets_data.append(tweet)
except:
continue
print(len(tweets_data))
tweets = pd.DataFrame()
tweets['text'] = map(lambda tweet: tweet['text'], tweets_data)
答案 0 :(得分:1)
好吧,我最后拼凑了关于这个问题的所有点点滴滴.....并发现它一切按预期工作。至少在map()
期间没有例外。 json
文件解析确定。
在Python 2和3上使用pandas-0.16.2。
我在Python 3中注意到的一件事是map()
返回一个map
对象,而不是完全呈现的列表。所以数据框看起来像这样:
text
0 <map object at 0x7fd3a6a94f60>
1 <map object at 0x7fd3a6a94f60>
2 <map object at 0x7fd3a6a94f60>
....
对您或您的熊猫版本来说,这可能是个问题。
您可以使用列表解析来解决这个问题:
tweets['text'] = [tweet['text'] for tweet in tweets_data]
或将map()
与list()
包裹在一起:
tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data))
然后你应该得到这个:
>>> tweets
text
0 Tumi Inc. civil war: Staff manning US ceasefir...
1 #bigdata #SaaS RT CStoreNews_: (Cheat Sheet) D...
2 #bigdata #SaaS RT priyaank: 24 #DataScience, #...
3 #python dropbox_tools 1.2: A collection of com...
....