簡體   English   中英

python - 無法解碼JSON對象

[英]python - JSON object could not be decoded

我試圖使用tweepy挖掘twitter數據並將數據加載到JSON文件中,但是以下代碼:

import tweepy
from tweepy import OAuthHandler
import json

consumer_key = '****'
consumer_secret = '****'
access_token = '****'
access_secret = '****'

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)

f = open('twitterdata.json', 'a+')

for status in tweepy.Cursor(api.home_timeline).items(10):
        json.dump(status._json, f)

line = f.readline()
tweet = json.loads(line)
print json.dumps(tweet, indent = 4)

產生錯誤:

Traceback (most recent call last):
  File "mytwittermine.py", line 21, in <module>
    tweet = json.loads(line)
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

UPDATE

正如其中一個答案中所建議的那樣,我現在在for循環的每次迭代中添加一個換行符,所以代碼現在是:

import tweepy
from tweepy import OAuthHandler
import json

consumer_key = '****'
consumer_secret = '****'
access_token = '****'
access_secret = '****'

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)

f = open('twitterdata.json', 'a+')

for status in tweepy.Cursor(api.home_timeline).items(10):
        json.dump(status._json, f)
        f.write('\n')

f.seek(0)
line = f.readline()
tweet = json.loads(line)
print json.dumps(tweet, indent = 4)

上面的代碼給出了ValueError:

Traceback (most recent call last):
  File "mytwittermine.py", line 23, in <module>
    tweet = json.loads(line)
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 367, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 3115 - line 2 column 1 (char 3114 - 301245)

你寫入一個文件,然后用倒帶讀取,所以沒有任何東西被讀取。 在寫和讀之間添加f.seek(0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM