python字典保存為json后讀取出錯(cuò)問(wèn)題及解決
python字典保存為json后讀取出錯(cuò)
json.load()讀取json文件數(shù)據(jù)時(shí),報(bào)錯(cuò):XXXXXXXXX。
是因?yàn)樵趈son文件中的引號(hào)為單引號(hào),json.load()只能識(shí)別雙引號(hào)。
避免報(bào)錯(cuò)的方式有三種
1、從保存文件時(shí)入手,剛開(kāi)始就避免json文件中寫(xiě)入單引號(hào)。
json文件之所以寫(xiě)入單引號(hào),大概率是在寫(xiě)入數(shù)據(jù)時(shí),直接str(dict_data)字典轉(zhuǎn)字符串,這種遺留問(wèn)題就是不能用json.load()讀取,寫(xiě)的時(shí)候應(yīng)該用:json.dump(dict_data,file),一次寫(xiě)入到j(luò)son文件中的字典是雙引號(hào)的。
2、如果不想更換寫(xiě)入方式,或者數(shù)據(jù)是別人的,難么可以換讀取方式。使用內(nèi)置模塊ast的literal_eval方法:
import ast ast.literal_eval(string)
3、直接使用python內(nèi)置函數(shù)eval(string)
2和3的方法可以直接把字符串形式的json數(shù)據(jù)轉(zhuǎn)為字典。
json文件轉(zhuǎn)為str出現(xiàn)中文亂碼問(wèn)題
原來(lái)的代碼是這樣的
with open(fileName,'w',encoding='utf-8') as f:
json.dump(AllResume,f)
當(dāng)然用
temp = json.dumps(AllResume)
with open(fileName,'w',encoding='utf-8') as f:
f.write(temp)
f.close()
得到的也是一樣的結(jié)果。
出現(xiàn)的結(jié)果如下:

這是因?yàn)閖son.dumps或者json.dump 序列化時(shí)對(duì)中文默認(rèn)使用的ascii編碼,想輸出真正的中文需要指定ensure_ascii=False:
with open(fileName,'w',encoding='utf-8') as f:
json.dump(AllResume,f,ensure_ascii=False)
此時(shí)得到的結(jié)果才是:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Selenium環(huán)境變量配置(火狐瀏覽器)及驗(yàn)證實(shí)現(xiàn)
這篇文章主要介紹了Selenium環(huán)境變量配置(火狐瀏覽器)及驗(yàn)證實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python使用matplotlib實(shí)現(xiàn)基礎(chǔ)繪圖功能示例
這篇文章主要介紹了Python使用matplotlib實(shí)現(xiàn)基礎(chǔ)繪圖功能,結(jié)合實(shí)例形式分析了Python基于matplotlib實(shí)現(xiàn)正弦、余弦圖形及多軸圖的相關(guān)繪制操作技巧,需要的朋友可以參考下2018-07-07
深度學(xué)習(xí)詳解之初試機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)可應(yīng)用在各個(gè)方面,本篇將在系統(tǒng)性進(jìn)入機(jī)器學(xué)習(xí)方向前,初步認(rèn)識(shí)機(jī)器學(xué)習(xí),利用線(xiàn)性回歸預(yù)測(cè)波士頓房?jī)r(jià),讓我們一起來(lái)看看吧2021-04-04
Python編程使用*解包和itertools.product()求笛卡爾積的方法
這篇文章主要介紹了Python編程使用*解包和itertools.product()求笛卡爾積的方法,涉及Python列表轉(zhuǎn)換及itertools.product()求笛卡爾積相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
Python實(shí)現(xiàn)采集網(wǎng)站ip代理并檢測(cè)是否可用
這篇文章主要介紹了如何利用Python爬蟲(chóng)實(shí)現(xiàn)采集網(wǎng)站ip代理,并檢測(cè)IP代理是否可用。文中的示例代碼講解詳細(xì),感興趣的可以試一試2022-01-01
python?numpy庫(kù)中數(shù)組遍歷的方法
本文主要介紹了python?numpy庫(kù)中數(shù)組遍歷的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
使用Python實(shí)現(xiàn)惰性加載的三種方法詳解
在現(xiàn)代軟件開(kāi)發(fā)中,惰性加載是一種優(yōu)化技術(shù),用于延遲計(jì)算或加載資源密集型屬性,直至首次訪問(wèn)時(shí)才執(zhí)行,Python提供了豐富的元類(lèi)與屬性操作機(jī)制,允許我們通過(guò)getattr、getattribute和setattr方法實(shí)現(xiàn)惰性屬性管理,本文將詳細(xì)探討這三種方法的實(shí)現(xiàn)細(xì)節(jié),需要的朋友可以參考下2025-10-10
Python 非極大值抑制(NMS)的四種實(shí)現(xiàn)詳解
本文主要介紹了非極大值抑制(Non-Maximum Suppression,NMS)的四種實(shí)現(xiàn)方式,不同方法對(duì)NMS速度的影響各不相同,感興趣的小伙伴可以了解一下2021-11-11

