今天分享一个参数转Python字典的案例

不知道大家见过这种数据结构没有:

data_list[0][stage_id]: 0
data_list[0][stage_type]: 1
data_list[0][is_open]: 1
data_list[0][contacter]: 1
data_list[0][date_type]: 1
data_list[0][fixed_date_type]: 1
data_list[0][fixed_date]: 1
data_list[1][stage_id]: 0
data_list[1][stage_type]: 2
data_list[1][is_open]: 1
data_list[1][contacter]: 1
data_list[1][date_type]: 1
data_list[1][fixed_date_type]: 1
data_list[1][fixed_date]: 2

讲道理,这是第一次见这种数据结构,可能是PHP独有的解析方法,格式可能不是重点,重点是当你用request发起http请求的时候,如果你想转成[{"stage_id":0,"stage_type":1},{"stage_id":2,"stage_type":1}]再发送,会提示失败,因为这不是正规的解析方式,怎么能正常请求呢,"data_list[0][stage_id]": 0,

然后就有了下面的解析代码:

        body = """data_list[0][stage_id]: 0
data_list[0][stage_type]: 1
data_list[0][is_open]: 1
data_list[0][contacter]: 1
data_list[0][date_type]: 1
data_list[0][fixed_date_type]: 1
data_list[0][fixed_date]: 1
data_list[1][stage_id]: 0
data_list[1][stage_type]: 2
data_list[1][is_open]: 1
data_list[1][contacter]: 1
data_list[1][date_type]: 1
data_list[1][fixed_date_type]: 1
data_list[1][fixed_date]: 2""" result = {} r1 = [] r2 = []
# 通过正则表达式分别拿到冒号前面和后面的值,然后进行切片 da1 = re.findall(".*?:", body) for d1 in da1: r1.append(str(d1).strip().split(':')[0]) da2 = re.findall(":.*", body) for d2 in da2: r2.append(str(d2).strip().split(':')[1]) for i in range(len(r1)):
# 如果value是数字,那么直接转int了,如果是字符串,再触发异常后,直接放入value try: result[r1[i]] = int(r2[i]) except Exception: result[r1[i]] = r2[i]

  

posted @ 2020-11-06 09:49  绝世老中医  阅读(101)  评论(0编辑  收藏  举报