我想解析與python和請求的API的數據。請求 - Python解析JSON錯誤 - 加載與編解碼器
SO參考如上我已經更新腳本與每個錯誤地接收 Python codecs和utf-8 bom error
列出了多個引用。
import requests
import codecs
import json
r = requests.get(
"https://api.tatts.com/sales/vmax/web/data/racing/2017/4/05/mr/")
data = json.load(codecs.open(r.json(), 'utf-8-sig'))
# reads = r.json()
# data = reads.decode('utf-8-sig')
with open('data.json', 'w') as f:
json.dump(data, f)
我想從API https://api.tatts.com/sales/vmax/web/data/racing/2017/4/05/mr/響應保存到file.json
起初,我收到了來自SO參考答案下面這樣應用的編解碼器的分辨率。
json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0)
這個決議從SO回答。
data = json.load(codecs.open(r.json(), 'utf-8-sig'))
現在我收到錯誤
TypeError: expected str, bytes or os.PathLike object, not dict
但是我無法解決typerror因爲我需要使用的編解碼器停止UT8-SIG錯誤加載。
如何解析和寫入請求並避免這兩個錯誤?
編輯
使用下面的答案已更新,但無法將文件寫入到磁盤。
import requests
import codecs
import json
r = requests.get(
"https://api.tatts.com/sales/vmax/web/data/racing/2017/4/05/mr/")
data = json.load(codecs.open(r.text, 'r', 'utf-8-sig'))
with open('data.json', 'w') as f:
f.write(data)
回答
import requests
import json
r = requests.get(
"https://api.tatts.com/sales/vmax/web/data/racing/2017/4/05/mr/")
output = open('data.json', 'w')
output.write(r.text)
是否有你需要使用'r.json()'理由嗎?爲什麼不直接將'r.text'寫入文件? –