[英]Read from JSON file with multiple objects in Python
我對 Python 中的 JSON 庫有疑問。 我想不出一種從 json 文件中讀取數據的方法,如下所示:
{"name": "LOTR", "author": "Tolkin"}{"name": "Aska", "author": "Ivo"}
因為當我嘗試使用此代碼加載數據時:
with open("json_books.txt","r") as file:
json_data = json.load(file)
我收到以下錯誤:
json.decoder.JSONDecodeError: Extra data: line 1 column 37 (char 36)
我查了一下,我找到的解決方案都沒有幫助我。 如果有人能幫助我解決這個問題,我將不勝感激。
您可以將文件內容作為字符串讀取,從JSONDecodeError
異常的錯誤消息中提取作為索引的“char”編號,並將字符串的切片重新解析為有效的 JSON,並解析其余部分以相同的方式處理字符串,直到它不再引發錯誤:
import json
import re
s = '{"name": "LOTR", "author": "Tolkin"}{"name": "Aska", "author": "Ivo"}'
json_data = []
while True:
try:
json_data.append(json.loads(s))
break
except json.JSONDecodeError as e:
match = re.match(r'Extra data: .*\(char (\d+)\)', str(e))
if match:
index = int(match.group(1))
json_data.append(json.loads(s[:index]))
s = s[index:]
else:
raise
print(json_data)
這輸出:
[{'name': 'LOTR', 'author': 'Tolkin'}, {'name': 'Aska', 'author': 'Ivo'}]
您列出的不是有效的 JSON。 JSON 必須在頂層有一個列表或對象——它有兩個對象。
也許正確的 JSON 應該是:
[{"name": "LOTR", "author": "Tolkin"}, {"name": "Aska", "author": "Ivo"}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.