淺析python解析不規(guī)則json字符串

最近在開發(fā)爬蟲過程中,遇到一些python在解析不規(guī)則json字符串時出現(xiàn)解析不了的情況,特些記錄一下:

正常情況下我們?nèi)〉降膉son字符串應(yīng)該都是像下面這種情況,用"包起來的

{"name":"test"}

而在爬取網(wǎng)站中會遇到很多不規(guī)則的json字符串,這些json字符串在javascript之中是可以正常解析的,但是在python中就會拋出ValueError異常。對于這種不是用雙引號包起來的不規(guī)則json字符串可以使用一個第三方包demjson來解決,安裝命令如下:

pip install demjson

安裝好后直接在代碼中調(diào)用就可以直接把不規(guī)則的json字符串轉(zhuǎn)化為標(biāo)準(zhǔn)python字典

import demjson

str = '{name: "test"}'

print demjson.decode(str)

第二種情況是得到的json字符串是經(jīng)過unicode轉(zhuǎn)碼的,這時拿到的json字符串會像下面這樣:

{name:\u0027test\u0027}

這種解決辦法可以使用字符串替換函數(shù)把\u0027轉(zhuǎn)化為",再使用demjson.decode就可以轉(zhuǎn)化成功。

import demjson

str = '{name: \u0027test\u0027}'

str = str.replace('\u0027', '\"')

print demjson.decode(str)

第三種情況是拿回來的json字符串的鍵是有"的,但是這時的json字符串是經(jīng)過特殊字符轉(zhuǎn)義的,如下

{\"name\":\"test\"}

這種情況在控制臺是能夠直接處理,但是在我的scrpay程序中會遇到一些問題,我的解決思路是把字符串轉(zhuǎn)回去再處理

import demjson

str = {\"name\":\"test\"}

print demjson.decode(str.decode("string_escape"))

以上就是我遇到的這三種問題的處理思路供大家參考。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,881評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 不用煽情,直接上感受 1:知識存量——最先吸引我的是老板的知識存量之豐富,可以說上知天文,下知地理。很多他的講述糾...
    Liudi閱讀 464評論 0 0
  • 進入dos命令窗口:nslookup 域名Addresses欄有多個IP的表示使用了CDN,單個IP的則未使用CD...
    靈籟閱讀 9,372評論 0 1
  • 慵懶的躺在床上,不想工作與生活的瑣事。 作為嗜煙好酒的“不良市民”,每天都在奔忙,忽然之間不知道為了什么。不去想,...
    饒子說閱讀 423評論 0 0

友情鏈接更多精彩內(nèi)容