python的requests.post()方法中,headers的传入参数类型应为字典格式,即
{‘key1’:‘value1’,‘key2’:‘value2’,‘key3’:‘value3’}。而以xlrd读取表格中单元格的形式读出数据时,headers的格式为str格式,需要转换为dict的格式后才能传入到post的参数中。
本函数将表格中的
{
content_type:value1
appKey:AsdweSAD13rteDwaeasdD
appSercet:12312552312
url:http://10.10.10.16:9443
}
转换为
{‘content_type’: ‘value1’, ‘appKey’: ‘AsdweSAD13rteDwaeasdD’, ‘appSercet’: ‘12312552312’, ‘url’: ‘http://10.10.10.16:9443’}。
str格式的headers转换为dict格式的headers
从表格中读取的headers数据以及格式:
转换主要思想:
不断遍历列表格式的headers中的每个字段,单独对单个字段处理,然后以:连接起来,以dic.update()方法形成字典
1.curr_header=curr_header.splitlines()#去除/n换行符
2.curr_header.pop(0)#除去[
curr_header.pop(-1)#]
3.不断遍历出字符串格式的key和value,添加到临时列表中:
for curr_headers_element in curr_header:
temp_list1.append(curr_headers_element)
for curr_list_element in temp_list1:
temp_list2.append(curr_list_element)
4.以:分割字段,:前的字段为key,:后的字段为value:
temp_key=curr_list_element.split(r":")[0]#提取key值
temp_value=curr_list_element.split(r":")[1:]#提取value值
5.此处考虑到“url:http://xx.xx.xx.xx:xx”的数据,即存在两个:的情况。分别处理后将连接起来的“key1”:“value1”添加到临时空字典中:
if temp_value[0]==temp_value[-1]:#验证该数组中是否只有一个元素,主要是为了避免url:ip:port的情况
normalType_value=temp_value[0]#提取key值
temp_dic={temp_key:normalType_value}
dic.update(temp_dic)#处理过的键值对以字典形式添加进最终headers中
else:
element_url=temp_value[0]#提取value值
hostType_value=':'.join(temp_value)#以:连接被:分割的元素
element_host = hostType_value
dic_urltype={temp_key:element_host}#合并为url:http://10.0.0.1:9443格式
6.别忘了重置临时列表
temp_list1.clear()
temp_list2.clear()
转换后的headers数据以及格式:
简单封装成函数的转换代码如下:
def headers_handle(curr_header):
curr_header=curr_header.splitlines()#去除/n换行符
curr_header.pop(0)#除去[
curr_header.pop(-1)#]
#print('curr_header:',curr_header)
temp_list1=[]
temp_list2=[]
dic={}#最终输出headers
for curr_headers_element in curr_header:
temp_list1.append(curr_headers_element)
for curr_list_element in temp_list1:
temp_list2.append(curr_list_element)
temp_key=curr_list_element.split(r":")[0]#提取key值
temp_value=curr_list_element.split(r":")[1:]#提取value值
if temp_value[0]==temp_value[-1]:#验证该数组中是否只有一个元素,主要是为了避免url:ip:port的情况
normalType_value=temp_value[0]#提取key值
temp_dic={temp_key:normalType_value}
dic.update(temp_dic)#处理过的键值对以字典形式添加进最终headers中
else:
element_url=temp_value[0]#提取value值
hostType_value=':'.join(temp_value)#以:连接被:分割的元素
element_host = hostType_value
dic_urltype={temp_key:element_host}#合并为url:http://10.0.0.1:9443格式
dic.update(dic_urltype)#处理过的键值对以字典形式添加进最终headers中
temp_list1.clear()
temp_list2.clear()
print(dic)#最终headers格式为字典
return dic
该方法仅提供一种headers转字典格式的思路,条件覆盖情况可能远远低于实际,后续再不断完善吧。。