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'}

完美!



原文地址:https://www.cnblogs.com/chushujin/p/14245229.html