「panamaleaks50k.json」という名前のjsonファイルがあります。 JSONファイルから['text']フィールドを取得したいのですが、次のエラーが表示されます
jSONオブジェクトは、 'TextIOWrapper'ではなく、str、bytes、またはbytearrayでなければなりません
これは私のコードです
with open('C:/Users/bilal butt/Desktop/PanamalEakJson.json','r') as lst:
b = json.loads(lst)
print(b['text'])
私のjsonファイルの外観
[
{
"fullname": "Mohammad Fayyaz",
"id": "885800668862263296",
"likes": "0",
"replies": "0",
"retweets": "0",
"text": "Love of NS has been shown in PanamaLeaks scandal verified by JIT...",
"timestamp": "2017-07-14T09:58:31",
"url": "/mohammadfayyaz/status/885800668862263296",
"user": "mohammadfayyaz"
},
{
"fullname": "TeamPakistanPTI \u00ae",
"id": "885800910357749761",
"likes": "0",
"replies": "0",
"retweets": "0",
"text": "RT ArsalanISF: #PanamaLeaks is just a start. U won't believe whr...",
"timestamp": "2017-07-14T09:59:29",
"url": "/PtiTeampakistan/status/885800910357749761",
"user": "PtiTeampakistan"
}
]
すべての['text']フィールドと単一の['text']フィールドを読み取る方法
ファイルcontents(つまり文字列)を、ファイルオブジェクト自体ではなく、json.loads()
に渡す必要があります。これを試して:
_with open(file_path) as f:
data = json.loads(f.read())
print(data[0]['text'])
_
また、ファイルオブジェクトを受け入れ、内部でjson.load()
部分を実行する f.read()
関数もあります。
入力がファイルのようなオブジェクト(TextIOWrapperなど)の場合は、json.load()
ではなくjson.loads()
を使用します。
次の完全な再生装置があるとします。
import json, tempfile
with tempfile.NamedTemporaryFile() as f:
f.write(b'{"text": "success"}'); f.flush()
with open(f.name,'r') as lst:
b = json.load(lst)
print(b['text'])
...出力はsuccess
です。