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)文章
python中使用ctypes調(diào)用so傳參設(shè)置遇到的問題及解決方法
這篇文章主要介紹了python中使用ctypes調(diào)用so傳參設(shè)置,本文較詳細(xì)的給大家介紹了遇到問題及解決方案,需要的朋友可以參考下2019-06-06Python?基于TCP?傳輸協(xié)議的網(wǎng)絡(luò)通信實現(xiàn)方法
網(wǎng)絡(luò)編程指在網(wǎng)絡(luò)環(huán)境中,如何實現(xiàn)不在同一物理位置中的計算機之間進行數(shù)據(jù)通信,本文重點給大家介紹Python?基于TCP?傳輸協(xié)議的網(wǎng)絡(luò)通信實現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2022-02-02Python-OpenCV中的cv2.inpaint()函數(shù)的使用
大多數(shù)人會在家里放一些舊的退化照片,上面有一些黑點,一些筆畫等。你有沒有想過恢復(fù)它?本文就來介紹一下方法,感興趣的可以了解一下2021-06-06Python將PDF轉(zhuǎn)換為HTML的實現(xiàn)方法
PDF文件是共享和分發(fā)文檔的常用選擇,但提取和再利用PDF文件中的內(nèi)容可能會非常麻煩,本文重點介紹如何在Python程序中將PDF轉(zhuǎn)換為HTML,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2024-03-03Python超越函數(shù)積分運算以及繪圖實現(xiàn)代碼
今天小編就為大家分享一篇Python超越函數(shù)積分運算以及繪圖實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11python re正則表達(dá)式模塊(Regular Expression)
Python 的 re 模塊(Regular Expression 正則表達(dá)式)提供各種正則表達(dá)式的匹配操作,在文本解析、復(fù)雜字符串分析和信息提取時是一個非常有用的工具.2014-07-07