python字典保存為json后讀取出錯問題及解決
python字典保存為json后讀取出錯
json.load()讀取json文件數(shù)據(jù)時,報錯:XXXXXXXXX。
是因為在json文件中的引號為單引號,json.load()只能識別雙引號。
避免報錯的方式有三種
1、從保存文件時入手,剛開始就避免json文件中寫入單引號。
json文件之所以寫入單引號,大概率是在寫入數(shù)據(jù)時,直接str(dict_data)字典轉(zhuǎn)字符串,這種遺留問題就是不能用json.load()讀取,寫的時候應(yīng)該用:json.dump(dict_data,file),一次寫入到j(luò)son文件中的字典是雙引號的。
2、如果不想更換寫入方式,或者數(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)中文亂碼問題
原來的代碼是這樣的
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é)果如下:

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

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Selenium環(huán)境變量配置(火狐瀏覽器)及驗證實現(xiàn)
這篇文章主要介紹了Selenium環(huán)境變量配置(火狐瀏覽器)及驗證實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python使用matplotlib實現(xiàn)基礎(chǔ)繪圖功能示例
這篇文章主要介紹了Python使用matplotlib實現(xiàn)基礎(chǔ)繪圖功能,結(jié)合實例形式分析了Python基于matplotlib實現(xiàn)正弦、余弦圖形及多軸圖的相關(guān)繪制操作技巧,需要的朋友可以參考下2018-07-07
深度學(xué)習(xí)詳解之初試機器學(xué)習(xí)
機器學(xué)習(xí)可應(yīng)用在各個方面,本篇將在系統(tǒng)性進(jìn)入機器學(xué)習(xí)方向前,初步認(rèn)識機器學(xué)習(xí),利用線性回歸預(yù)測波士頓房價,讓我們一起來看看吧2021-04-04
Python編程使用*解包和itertools.product()求笛卡爾積的方法
這篇文章主要介紹了Python編程使用*解包和itertools.product()求笛卡爾積的方法,涉及Python列表轉(zhuǎn)換及itertools.product()求笛卡爾積相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
Python實現(xiàn)采集網(wǎng)站ip代理并檢測是否可用
這篇文章主要介紹了如何利用Python爬蟲實現(xiàn)采集網(wǎng)站ip代理,并檢測IP代理是否可用。文中的示例代碼講解詳細(xì),感興趣的可以試一試2022-01-01
Python 非極大值抑制(NMS)的四種實現(xiàn)詳解
本文主要介紹了非極大值抑制(Non-Maximum Suppression,NMS)的四種實現(xiàn)方式,不同方法對NMS速度的影響各不相同,感興趣的小伙伴可以了解一下2021-11-11

