Python3-接口自动化-11-使用join方法请求参数拼接,格式key1=value1&keys=value2....
一、join语法
定义:用于将序列中的元素以指定的字符连接生成一个新的字符串
语法:str.join(sequence) sequence -- 要连接的元素序列。
1.1 使用“-”,"","&"等连接列表/元组中个元素,生成一个字符串
s = ['chu','shu','jin'] # 用-去连接列表中每个元素 print("-".join(s)) # ------------输出-------- chu-shu-jin # 用空去连接列表中每个元素,用此方法可将列表转成字符串 print("".join(s)) # ------------输出-------- # chushujin # 用&去连接列表中每个元素,用此方法可将列表转成字符串 print("&".join(s)) # ------------输出-------- chu&shu&jin
1.2 元组是相同原理
s = ('chu','shu','jin') # 用-去连接列表中每个元素 print("-".join(s)) # ------------输出-------- chu-shu-jin # 用空去连接列表中每个元素,用此方法可将列表转成字符串 print("".join(s)) # ------------输出-------- # chushujin # 用&去连接列表中每个元素,用此方法可将列表转成字符串 print("&".join(s)) # ------------输出-------- chu&shu&jin
1.3 使用此方法去将一个字典进行连接 将字典按照key1=value1&keys=value2....输出
1.3.1 首先将列表中的元组中的各元素按照a=11 b=22 c=33格式输出
d = {"a":"11","b":"22","c":"33"} print(d.items()) #------------输出----------------- dict_items([('a', 11), ('b', 22), ('c', 33)]) # 生成的是一个列表式迭代器
第一种方法:
首先将列表中的元组中的各元素按照a=11 b=22 c=33格式输出 l = [] for i in d.items(): print(i) # ------------输出----------------- ('a', '11') ('b', '22') ('c', '33') print("=".join(i)) # ------------输出----------------- a=11 b=22 c=33 l.append("=".join(i)) print(l) # ------------输出----------------- ['a=11', 'b=22', 'c=33']
第二种简洁方法:使用列表推导式
buildStr = ["=".join(i) for i in d.items()] print(buildStr) #------------输出----------------- ['a=11', 'b=22', 'c=33']
1.3.2 将['a=11', 'b=22', 'c=33']列表中各元素按照a=11&b=22&c=33输出
print("&".join(buildStr)) #------------输出----------------- a=11&b=22&c=33
二、实际应用
参数格式:
{ "param":{"a":"11","b":"22","c":"33"}, "token":"", "deviceId":"", "d_track_data":{"session_id":"gfgfgfgfgfgfgfggfgfgfg","project":"主小程序","tdc":"","tpc":"","uuid":"bgbgbgbgbgbgbgbgbgbg","env":"minip"} }
2.1 将入参进行分割,封装(切记下方加粗的参数要转化成字符串形式,否则下方拼接时会报错,只有key和value一样的类型才可以使用join拼接)
def interface_param(token=None,loginId=None): param = { "a" :"11", "b" :"22", "c" :"33" } d_track_data = { "session_id" :"gfgfgfgfgfgfgfggfgfgfg", "project" :"主小程序", "tdc" :"", "tpc" :"", "uuid" :"bgbgbgbgbgbgbgbgbgbg", "env" :"minip" } data = { "param" :str(param), # 切记此处一定要转化成字符串 "token" :"{}".format(token if token else ""), "deviceId" :"", "loginId" :"{}".format(loginId if loginId else ""), "d_track_data" :str(d_track_data) # 切记此处一定要转化成字符串
} return data
2.2 将参数以param={}&token=""&deviceId=""&d_track_data={}格式输出,如下封装的方法:
def dict_build_to_string(data): buildStr = ["=".join(i) for i in data.items()] return "&".join(buildStr)
2.3 调用方法,并输出结果
param = dict_build_to_string(interface_param()) print(param) #-------------------输出---------------------param={'a': '11', 'b': '22', 'c': '33'}&token=&deviceId=&loginId=&d_track_data={'session_id': 'gfgfgfgfgfgfgfggfgfgfg', 'project': '主小程序', 'tdc': '', 'tpc': '', 'uuid': 'bgbgbgbgbgbgbgbgbgbg', 'env': 'minip'}
完美!
当有些人一出生就有的东西,我们要为之奋斗几十年才拥有。但有一样东西,你一辈子都不会有,那就是我们曾经一无所有。