iT邦幫忙

0

PYTHON 讀取網站JSON問題請教

  • 分享至 

  • xImage

您好:
參考書本

import json
import requests

url = "https://www.googleapis.com/books/v1/volumes?maxResults=5&q=Python&projection=lite"
jsonfile = "Books.json"
r = requests.get(url)
r.encoding = "utf8"
json_data = json.loads(r.text)

print(json_data)

with open(jsonfile, 'w') as fp:
    json.dump(json_data, fp)    


在開發軟體,呈現中文字
但寫入Books.json卻是 \u8cc7
請問這是什麼原因?
該如何處理呢?
謝謝
https://ithelp.ithome.com.tw/upload/images/20240916/20104095OukVRistiS.png

gbaian10 iT邦新手 5 級 ‧ 2024-09-17 03:35:17 檢舉
with open("Books.json", "w", encoding="utf-8") as fp:
json.dump(json_data, fp=fp, ensure_ascii=False, indent=4)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
whoami
iT邦新手 1 級 ‧ 2024-09-16 22:10:18
最佳解答

Answer from ChatGPT

這種情況是因為在 Python 中,當將 Unicode 字符(例如中文)寫入 JSON 文件時,預設會將其轉換為 Unicode 編碼的轉義序列,例如 \u8cc7,這代表的是「資」這個字。這樣的轉換是為了保證 JSON 文件的兼容性,特別是針對不支持 Unicode 的應用程式。

要解決這個問題,使 JSON 文件直接顯示中文字符而不是轉義序列,你可以在 json.dump() 函數中使用 ensure_ascii=False 這個參數。這樣,Python 會以非 ASCII 編碼(即 Unicode)直接寫入中文字符。

修改範例如下:

import json
import requests

url = "https://www.googleapis.com/books/v1/volumes?maxResults=5&q=Python&projection=lite"
jsonfile = "Books.json"
r = requests.get(url)
r.encoding = "utf8"
json_data = json.loads(r.text)

print(json_data)

with open(jsonfile, 'w', encoding='utf8') as fp:
    json.dump(json_data, fp, ensure_ascii=False, indent=4)

這樣處理後,Books.json 中的中文會以可讀形式顯示,而不是以 Unicode 轉義的形式出現。

noway iT邦研究生 2 級 ‧ 2024-09-17 10:39:11 檢舉

謝謝!

yydaixie
iT邦新手 5 級 ‧ 2024-09-17 14:29:46
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答