2016-03-05 39 views
-1

我使用Twitter的流API生成了一個.json文件。因此,我的.json文件有多個包含在斷開連接的json對象中的推文。在使用'jsonlint'進行驗證時,我不斷收到EOF錯誤。有沒有可能的解決這個問題的方法。我最終的目標是根據關鍵字和主題標籤直觀分析Twitter趨勢。以下是我的代碼:使用Python3解析json文件

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

迭代:

tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data)) 

那麼你應該得到這個

您可以通過使用列表理解修復行,使用'json.loads'加載每行' – MaxNoe

+0

問題是當我使用map()函數在我的變量上。 –

+0

你是什麼意思?你應該顯示代碼。 – MaxNoe

回答

1

那麼,我終於拼湊了關於這個問題的所有零碎.....並且發現它一切都按預期工作。至少在map()期間沒有發生異常。 json文件解析確定。

兩個Python 2和3

的一兩件事,我與Python 3注意到使用熊貓-0.16.2是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 
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... 
....