1. 程式人生 > 實用技巧 >關聯實現下-jsonpath取值

關聯實現下-jsonpath取值

re的使用參考:正則表示式基礎及re模組:https://www.cnblogs.com/dream66/p/12953729.html

import re
str1 = '{"access_token":${token}}'
dict1 = {'token': 'AFABMG'}
#成果:{"access_token":"AFABMG"}
variables_list = re.findall('\\${\w+}',str1)#\w表示一個字元 +表示多個字元
print(variables_list)
#str1 =str1.replace(variables_list[0],'AFABMG')#結果{"access_token":AFABMG}
str1 = str1.replace(variables_list[0],'"%s"'%'AFABMG')
print(str1)
str1 = str1.replace(variables_list[0],'"%s"'%dict1[ variables_list[0][2:-1] ])
print(str1)

str1 = str1.replace(variables_list[0],'"%s"'%dict1[ variables_list[0][2:-1] ])#取出來的token剛好和str1裡面的token一致

分解:

print(variables_list[0])
print(variables_list[0][2:-1]) #切片,把前面的2個字元${去掉,把後面的一個符號去掉 ,取出來的token剛好和dict1裡面的token一致
print(dict1[ variables_list[0][2:-1] ] )

舉例子samples/demo02.py

import re
import ast
import json
str1 = '{"access_token":${token}}'
dict1 = {'token': 'AFABMG'}
#成果:{"access_token":"AFABMG"}
variables_list = re.findall('\\${\w+}',str1)#\w表示一個字元 +表示多個字元
print(variables_list)
print(variables_list[0])
print(variables_list[0][2:-1]) #切片,把前面的2個字元${去掉,把後面的一個符號去掉 ,取出來的token剛好和dict1裡面的token一致
print(dict1[ variables_list[0][2:-1] ] )
#str1 =str1.replace(variables_list[0],'AFABMG')#結果{"access_token":AFABMG}
str1 = str1.replace(variables_list[0],'"%s"'%'AFABMG')
print(str1)
str1 = str1.replace(variables_list[0],'"%s"'%dict1[ variables_list[0][2:-1] ])
print(str1)


str2 = 'a ${a} a'#'{"name":${n},"age":${a}}'
dict2 = {'n': 'xiaoming','a':18}
variables_list1 = re.findall('\\${\w+}',str2)
print( variables_list1 )

for v in variables_list1: #v表示其中的一個
str2 = str2.replace( v,'"%s"'%dict2[v[2:-1]] ) #"%s"雙引號為了順利的轉成json物件
print( str2 )
str3 = "{'name':'xiaoming'}"
str4 = '{"name":"xiaoming"}'
print( json.loads(str4) )
print( ast.literal_eval( str3 ) )


⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️

把v改成variables