• 今天分享一个参数转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]

      

  • 相关阅读:
    通讯总线 | 串口
    shell | 命令实用汇集
    编码 | 宏定义格式化日志信息
    shell | 脚本传参
    注释 | 代码注释原则
    GCC编译优化选项介绍
    shell | 已知进程查找命令
    网络 | ifconfig 配置 IP 掩码 网关
    Makefile | 使用eclipse软件自动生成Makefile文件
    VIO系统的IMU与相机时间偏差标定
  • 原文地址:https://www.cnblogs.com/jueshilaozhongyi/p/13935280.html
Copyright © 2020-2023  润新知