使用Python處理json字符串中的非法雙引號問題
Python處理json字符串中的非法雙引號
工作中數(shù)據(jù)清洗時遇到以下情況:
a = '{"地區(qū)": "湖南", "描述": "精通軟件開發(fā)、"數(shù)據(jù)挖掘"和分布式"}'
由于讀取出的json字符串中包含有非法雙引號,在使用json.loads()處理的時候報錯
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 29 (char 28)
寫了大半個小時的正則都無法解決
后來使用如下方法解決了,一并把json字符串中的換行符、分隔符和雙引號都轉(zhuǎn)義了
def deal_json_invaild(data): ? ? data = data.replace("\n", "\\n").replace("\r", "\\r").replace("\n\r", "\\n\\r") \ ? ? ? ? .replace("\r\n", "\\r\\n") \ ? ? ? ? .replace("\t", "\\t") ? ? data = data.replace('": "', '&&testPassword&&')\ ? ? ? ? .replace('", "', "$$testPassword$$")\ ? ? ? ? .replace('{"', "@@testPassword@@")\ ? ? ? ? .replace('"}', "**testPassword**") ? ? print(data) ? ? data = data.replace('"', r'\"')\ ? ? ? ? .replace('&&testPassword&&', '": "').replace('$$testPassword$$', '", "').replace('@@testPassword@@', '{"').replace('**testPassword**', '"}') ? ? print(data) ? ? return data
測試如下:
a = deal_json_invaild(a)
json_data = json.loads(a)> {"地區(qū)": "湖南", "描述": "精通軟件開發(fā)、\"數(shù)據(jù)挖掘\"和分布式"}
此時轉(zhuǎn)使用json.loads()便不會報錯了
Python json單、雙引號問題
在 python3 里,一個json是一個字典,形如 {"a":15}
json轉(zhuǎn)換成字符串的話
那么,如果你要將它轉(zhuǎn)換成字符串,也許你用的是str({"a":15}),這樣轉(zhuǎn)出來的,可能是是s= "{'a':'15'}",也就是說,里面的kv是單引號的。這個字符串,傳到其他地方,再用json.loads(s)的時候會出錯,json不支持單引號。
所以,假如你想把一個json結(jié)構(gòu),轉(zhuǎn)成字符串,傳遞給遠處,然后再重新解析成json結(jié)構(gòu),應(yīng)該這樣:
s = json.dumps({"a":15})
然后,把數(shù)據(jù)傳到遠端,然后再解析回來:
d = json.loads(s)
這樣就不會出錯了。
也支持列表,能一次性傳多個結(jié)構(gòu)
s = json.dumps([{"a":15}, {"b":20}])
然后,把數(shù)據(jù)傳到遠端,然后再解析回來:
d = json.loads(s)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
BatchNorm2d原理、作用及pytorch中BatchNorm2d函數(shù)的參數(shù)使用
這篇文章主要介紹了BatchNorm2d原理、作用及pytorch中BatchNorm2d函數(shù)的參數(shù)使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12使用selenium模擬動態(tài)登錄百度頁面的實現(xiàn)
本文主要介紹了使用selenium模擬動態(tài)登錄百度頁面,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05Spring Cloud Feign高級應(yīng)用實例詳解
這篇文章主要介紹了Spring Cloud Feign高級應(yīng)用實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12Python辦公自動化從Excel中計算整理數(shù)據(jù)并寫入Word
這篇文章主要為大家介紹了Python辦公自動化從Excel中計算整理數(shù)據(jù)并寫入Word示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06pytorch:model.train和model.eval用法及區(qū)別詳解
今天小編就為大家分享一篇pytorch:model.train和model.eval用法及區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02python的virtualenv虛擬環(huán)境常見問題和命令
在Python中,venv是一個用于創(chuàng)建和管理虛擬環(huán)境的模塊,虛擬環(huán)境可以幫助你在項目之間隔離不同的Python包和依賴關(guān)系,這篇文章主要介紹了python的virtualenv虛擬環(huán)境常見問題和命令,需要的朋友可以參考下2024-07-07基于python + django + whoosh + jieba 分詞器實現(xiàn)站內(nèi)檢索功能
這篇文章主要介紹了基于python + django + whoosh + jieba 分詞器實現(xiàn)站內(nèi)檢索功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08Python激活A(yù)naconda環(huán)境變量的詳細步驟
今天給大家分享Python激活A(yù)naconda環(huán)境變量的詳細步驟,激活A(yù)naconda環(huán)境變量分為簡潔版和詳細版,簡潔版只需要通過輸入命令進行配置即可,詳細版本文通過圖文步驟給大家介紹的非常詳細,需要的朋友參考下吧2021-06-06