2016-09-15 84 views
1

我流數據和數據蟒蛇Twitter的API數據被保存到一個JSON文件這樣處理與CSV或JSON

with open('filename.json', 'a') as f: 
    f.write(data) 

現在我想讀作進一步的分析數據。要簡單地在另一個程序中使用json文件,我能做的最簡單的事情就是。

import json 
with open('D:\Devotion of time\Data\paralympics.json') as f: 
data= json.load(f) 
or 
data= json.loads(f.read()) 

在這兩種情況下,我收到以下錯誤: -

c:\python27\lib\json\__init__.pyc in load(fp, encoding, cls, object_hook,      
parse_float, parse_int, parse_constant, object_pairs_hook, **kw) 
276   parse_float=parse_float, parse_int=parse_int, 
277   parse_constant=parse_constant,           
object_pairs_hook=object_pairs_hook, 
278   **kw) 
279 
280 

c:\python27\lib\json\__init__.pyc in loads(s, encoding, cls, object_hook,  
parse_float, parse_int, parse_constant, object_pairs_hook, **kw) 
324    parse_int is None and parse_float is None and 
325    parse_constant is None and object_pairs_hook is None and not 
kw): 
326   return _default_decoder.decode(s) 
327  if cls is None: 
328   cls = JSONDecoder 

c:\python27\lib\json\decoder.pyc in decode(self, s, _w) 
367   end = _w(s, end).end() 
368   if end != len(s): 
369    raise ValueError(errmsg("Extra data", s, end, len(s))) 
370   return obj 
371 

ValueError: Extra data: line 3 column 1 - line 107 column 1 (char 13127 - 394133) 

如果我切換到別的東西像這樣

data = [] 
with open('file') as f: 
for line in f: 
    data.append(json.loads(line)) 

然後我得到AttributeError的:「海峽'object has no attribute'read' also some time ValueError:沒有JSON對象可以被解碼

我搜索瞭解決方案,但沒有任何幫助。 我也嘗試用Pandas(pd.read_json())讀取它,但同樣的問題。我想對數據做什麼,就是換成一個csv文件,或者如果它是json,那麼試着以某種方式輕鬆使用它。數據看起來像this

所以如何處理這個?我應該改變程序還是別的什麼?或者更好的建議來處理twitter數據。*

使用Python27,win10,tweepy。

回答

1

您的文件不包含單個JSON對象,而是每行中包含多個JSON對象。你可以解析每一行如下:

with open('t.txt', 'r') as f: 
    res = [] 
    for line in f: 
     if line.strip() != '': # The sample file also has empty lines 
      res.append(json.loads(line)) 
+0

謝謝,看起來這工作。 –