資料提取之JSON與JsonPATH
import json
json模組提供了四個功能:dumps、dump、loads、load,用於字串 和 python資料型別間進行轉換。
1 . json.loads()
把json格式字串解碼轉換成Python物件 從json到python的型別轉換對照如下:
2 . json.dumps()
實現python型別轉化為json字串,返回一個str物件 把一個Python物件編碼轉換成Json字串
從python原始型別向json型別的轉化對照如下:
3. json.dump()
將Python內建型別序列化為json物件後寫入檔案
4. json.load()
讀取檔案中json形式的字串元素 轉化成python型別
JsonPath
JsonPath 對於 JSON 來說,相當於 XPath 對於 XML。
安裝方法:pip install jsonpath
JsonPath與XPath語法對比:
Json結構清晰,可讀性高,複雜度低,非常容易匹配,下表中對應了XPath的用法
注意:
json.loads() 是把 Json格式字串解碼轉換成Python物件,如果在json.loads的時候出錯,要注意被解碼的Json字元的編碼,如果傳入的字串的編碼不是UTF-8的話,需要指定字元編碼的引數encoding
如:
dataDict = json.loads(jsonStrGBK);
jsonStrGBK是JSON字串,假設其編碼本身是非UTF-8的話而是GBK 的,那麼上述程式碼會導致出錯,改為對應的:
dataDict = json.loads(jsonStrGBK, encoding="GBK");
字串編碼轉換 :
任何平臺的任何編碼都能和Unicode互相轉換
UTF-8 與 GBK 互相轉換,那就先把UTF-8轉換成Unicode,再從Unicode轉換成GBK,反之同理
# 這是一個 UTF-8 編碼的字串 utf8Str = "你好地球" # 1. 將 UTF-8 編碼的字串 轉換成 Unicode 編碼 unicodeStr = utf8Str.decode("UTF-8") # 2. 再將 Unicode 編碼格式字串 轉換成 GBK 編碼 gbkData = unicodeStr.encode("GBK") # 1. 再將 GBK 編碼格式字串 轉化成 Unicode unicodeStr = gbkData.decode("gbk") # 2. 再將 Unicode 編碼格式字串轉換成 UTF-8 utf8Str = unicodeStr.encode("UTF-8")
decode的作用是將其他編碼的字串轉換成 Unicode 編碼
encode的作用是將 Unicode 編碼轉換成其他編碼的字串
總之一句話:UTF-8是對Unicode字符集進行編碼的一種編碼方式