python中表格读取的headers格式转换为字典(1)

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数据以及格式:
python中表格读取的headers格式转换为字典(1)_第1张图片
转换主要思想:
不断遍历列表格式的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数据以及格式:
转换后的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转字典格式的思路,条件覆盖情况可能远远低于实际,后续再不断完善吧。。

你可能感兴趣的:(python)