不是所有以.json結尾的文件,裡面的數據都是標准的json格式。
如,以下名為countries.json文件中的數據格式,就是非標准化的json數據格式。
注:json標准格式中,字符串必須用雙引號,此文件字符串為單引號。
在讀取這類非標准格式的json文件時,使用python自帶的json模塊,將會報錯如下:
import json
# json模塊讀取非標准格式json文件
with open('countries.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 1 (char 2)
解決辦法:
使用python第三方模塊demjson,該模塊可以解決json模塊的格式限制問題,還包含了 JSONLint 的格式化及校驗功能。
demjson使用方法,如下:
1、demjson安裝
打開命令提示符(cmd),進入到本地安裝python環境的Scripts文件下,輸入安裝命令並回車,
安裝命令:pip install demjson
2、json文件讀取
demjson.decode_file(),讀取非標准格式的json文件,返回一個字典(dict)格式數據。
如,以上非標准countries.json文件讀取:
# 非標准格式json文件讀取
import demjson
data = demjson.decode_file('countries.json', encoding='utf-8')
print(data)
print("返回值類型:", type(data))
注:可見,使用json模塊讀取非標准json文件出錯時,可使用demjson第三方模塊來解決。
微信關注【一位代碼】,了解更多關於python相關問題解決辦法。
-end-