接口返回一個json。json中又包含字符串,字符串又存在編碼,那么我們該怎么去截取出想要的各種值呢 ?
從接口返回的json中獲取字符串的辦法請參考這里:https://www.cnblogs.com/Zhan-W/p/11876366.html
接下來就記錄一下如何從已經弄出來的字符串中截取想要的結果:
目標:從這個字符串中截取args值,但是args的值包含多個值,同時還存在編碼
eg: https://www.xxxxxxx.com/new/#/register/h5?ProjectType=0&args=eyJ0ZW5hbnROYW1lIjoiV01TXzUyMF8zODk0Iiwic2hhcmVQYXJhbSI6Im4zNGdDLzR1RnpNTkY0RVl5eWhUY3U4SlNmQ3JCbTExZGpQeE9uQld0Z2wyQXFJQmdFSGpsUT09In0%3d
操作步驟如下:
1、先解碼
# __*__coding:utf-8 __*__
import urllib.parse import base64 import json # 字符串S中的參數args是被編碼了的
s = "https://test.xxxxxx.com/new/#/register/h5?ProjectType=0&args=eyJ0ZW5hbnROYW1lIjoiV01TXzUyMF8zODk0Iiwic2hhcmVQYXJhbSI6Im4zNGdDLzR1RnpNTkY0RVl5eWhUY3U4SlNmQ3JCbTExZGpQeE9uQld0Z2wyQXFJQmdFSGpsUT09In0%3d"
# 先對字符串S進行解碼
url_parameter_1 = urllib.parse.unquote(s) print("解碼后的url_parameter_1值為:",url_parameter_1)
解碼后的結果為:
2、切片
# 通過使用split()來將解碼后的字符串S從字段“args=”進行切片
url_parameter_2 = url_parameter_1.split("args=") print("切片后的url_parameter_2值為:",url_parameter_2) # 查看切片后的url_parameter_2的類型
print("url_parameter_2值的類型為: ",type(url_parameter_2)) # 是一個list類型
切片后的結果為 :
3、取值
# 獲取切片后的值
url_parameter_3 = url_parameter_2[1] print("url_parameter_3的值為:",url_parameter_3)
取值的結果為:
到這里已經把這一大串仙想要的東西弄出來了,但是他還是經過base64位編碼了的,進行進行解碼:
4、解碼
url_parameter_4 = base64.b64decode(url_parameter_3)
解碼后的結果為:
此時獲取到的url_parameter_4的值類型為:bytes,其實是不便於我們獲取shareParam這個值的,
5、轉換類型
url_parameter_5 = json.loads(url_parameter_4) print("轉換類型后的url_parameter_5結果為:",url_parameter_5)
轉換后的結果為 :
現在已經是個字典了 ,我們按照獲取字典的值的方法去拿到shareParam的值
6、獲取字典值
url_parameter_6 = url_parameter_5["shareParam"] print(url_parameter_6)
獲取的字典值為 :
最終為了省地兒,可以合成這樣一句:
url_orgs = json.loads(base64.b64decode(urllib.parse.unquote(s).split("&args=")[1]))["shareParam"]
這樣就拿到了我最終想要的這個值,以供其他接口使用