2017-10-24 9 views
0

Tweet.pyによって作成されたJSONファイルを読み込もうとしています。しかし、私が何を試しても、私は一貫してValueErrorを受けています。Tweet.pyの結果からJSONオブジェクトを読み取る方法

とValueError:期待プロパティ名、ファイル内のこれらのJSONオブジェクトの

{ 'Twitter Data' : [ { 
"contributors": null, 
"coordinates": null, 
"created_at": "Tue Oct 24 15:55:21 +0000 2017", 
"entities": { 
    "hashtags": ["#football"] 
    }    
} , { 
"contributors": johnny, 
"coordinates": null, 
"created_at": "Tue Oct 24 15:55:21 +0000 2017", 
"entities": { 
    "hashtags": ["#football" , "#FCB"] 
    }    
} , ... ] } 

あり、少なくとも50:行1、列3(CHAR 2)

JSON結果の形式でありますそれらはコンマで区切られています。このJSONファイルを読み込むための

私のPythonスクリプトは次のとおりです。

twitter_data=[] 
with open('@account.json' , 'r') as json_data: 
    for line in json_data: 
     twitter_data.append(json.loads(line)) 

print twitter_data 

Tweet.pyを使用して、これらのJSONオブジェクトを書き込みます。

json.dump(status._json,file,sort_keys = True,indent = 4) 

私はこれを読んでする方法上の任意の助けや指導をお願い申し上げますファイル!

ありがとうございます。

+1

JSONファイルの完全なサンプルを提供してください。 –

+0

はい、もちろん@ChristopherBottoms – Pythoner1234

+1

1) '''はJSONの文字列区切りではありません.2)あなたのコードは新しいJSONのすべての行を期待していますが、サンプルは複数の行を取るJSONの単一のドキュメントです。 –

答えて

1

{ 'Twitter Data'ビットは{ "Twitter Data"にもキーと値(文字列)は、二重引用符で囲む必要がありますと言うことです"Johnny"

ようにする必要があります。

with open("@account.json","r") as json_data: 
    data = json_data.readlines() 
    twitter_data.append(json.loads(data)) 

はまた、自分自身これを使用していないが、これは同様に助けになるかもしれません:https://jsonlint.com

+0

私はこれを試したときに次のようなエラーが出る: obj、end = self.raw_decode(s、idx = _w(s、0).end()) TypeError:期待される文字列またはバッファー – Pythoner1234

0

まずオフ、@Robと@silentの両方が指摘しているとして、'Twitter Data'"Twitter Data"でなければなりません。 Jsonは二重引用符を必要とし、文字列を区切るには一重引用符ではありません。

json.load()を読み取る際に第二に、それはfileオブジェクトを期待し、そうjson.load()を呼び出すときに、ちょうどjson_dataに渡し、それがメモリに全体のJSONファイルを読み込みます:

with open('@account.json' , 'r') as json_data: 
    contents = json.load(json_data) 

EDIT:用

一度に複数のオブジェクトを処理する:

def get_objs(f): 
    content = f.read() 

    # Get each object in the contents of the file object. 
    # This is kinda clunky and inelegant, but it should work 
    objs = ['{}{}'.format(i, '}') for i in content.split('},')] 

    # Last json_obj probably got an unnecessary "}" at the end, so trim the 
    # last character from it 
    objs[-1] = objs[-1][0:-1] 

    json_objs = [json.loads(i) for i in objs] 
    return json_objs 

そして、次に行く:

with open('@account.json', 'r') as json_data: 
    json_objs = get_objs(json_data) 

これはうまくいきます。私がsimalarly形式のjsonファイルでそれをテストしたとき、それは私のためにしました。

+0

私は編集とただ試みた。 ValueError:いいえ、JSONオブジェクトをデコードできませんでした。 – Pythoner1234

+0

ああ、私は今、それぞれに複数のjsonオブジェクトがあると言いました。私は可能な解決策を思いつきました。今編集中。 – Jebby

+0

@ Pythoner1234:あなたが参照する複数のオブジェクトは、リスト・キー「Twitter Data」の中の複数のオブジェクトですか?または複数の「Twitterデータ」オブジェクトが存在しますか? 2つまたは3つのオブジェクトをリストして、JSONファイルの構造を明確にすることができます。 – silent

関連する問題