You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则处理API返回的赛马数据格式化需求

Python 解析赛事赔率数据

问题描述

从API获取到如下格式的字符串数据,需要将其解析为结构化的字典列表:

input_str = "'224014@@@1;1=8.4=0;2=33=0;3=9.4=0@@@2;1=15=0;2=3.3=1;3=4.2=0;4=5.7=0;5=9.4=0;6=22=0@@@3;1=17=0;2=7.4=0;3=27=0@@@4;1=14=0;2=7.8=0;3=5.9=0;4=23=0;5=4.0=1'"

数据结构说明:

  • 开头6位数字为更新时间(UPDATE TIME)
  • 以@@@X分隔不同赛事,X为赛事编号(Race No.)
  • 每个赛事后包含多匹马的数据,格式为Horse_No=Odd=status(马匹编号=赔率=状态)

解析代码

以下Python代码可实现需求,无需正则表达式即可完成解析:

import json

# 输入数据,先去除首尾的单引号
input_str = "'224014@@@1;1=8.4=0;2=33=0;3=9.4=0@@@2;1=15=0;2=3.3=1;3=4.2=0;4=5.7=0;5=9.4=0;6=22=0@@@3;1=17=0;2=7.4=0;3=27=0@@@4;1=14=0;2=7.8=0;3=5.9=0;4=23=0;5=4.0=1'"
clean_str = input_str.strip("'")

# 提取更新时间
updatetime = int(clean_str[:6])

# 拆分各赛事数据(跳过分割后第一个空元素)
race_segments = clean_str[6:].split('@@@')[1:]

result = []
for segment in race_segments:
    # 拆分赛事编号和马匹数据
    race_info = segment.split(';')
    race_no = int(race_info[0])
    horse_data_list = race_info[1:]
    
    # 处理每匹马的数据
    for horse_data in horse_data_list:
        horse_no, odd, status = horse_data.split('=')
        result.append({
            'Race_No': race_no,
            'Horse_No': int(horse_no),
            'Odd': float(odd),
            'status': int(status),
            'updatetime': updatetime
        })

# 格式化输出结果
print(json.dumps(result, indent=2))

输出结果

运行代码后将得到如下结构化输出:

[
  {
    "Race_No": 1,
    "Horse_No": 1,
    "Odd": 8.4,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 1,
    "Horse_No": 2,
    "Odd": 33.0,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 1,
    "Horse_No": 3,
    "Odd": 9.4,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 2,
    "Horse_No": 1,
    "Odd": 15.0,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 2,
    "Horse_No": 2,
    "Odd": 3.3,
    "status": 1,
    "updatetime": 224014
  },
  {
    "Race_No": 2,
    "Horse_No": 3,
    "Odd": 4.2,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 2,
    "Horse_No": 4,
    "Odd": 5.7,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 2,
    "Horse_No": 5,
    "Odd": 9.4,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 2,
    "Horse_No": 6,
    "Odd": 22.0,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 3,
    "Horse_No": 1,
    "Odd": 17.0,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 3,
    "Horse_No": 2,
    "Odd": 7.4,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 3,
    "Horse_No": 3,
    "Odd": 27.0,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 4,
    "Horse_No": 1,
    "Odd": 14.0,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 4,
    "Horse_No": 2,
    "Odd": 7.8,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 4,
    "Horse_No": 3,
    "Odd": 5.9,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 4,
    "Horse_No": 4,
    "Odd": 23.0,
    "status": 0,
    "updatetime": 224014
  },
  {
    "Race_No": 4,
    "Horse_No": 5,
    "Odd": 4.0,
    "status": 1,
    "updatetime": 224014
  }
]

说明

  • 代码通过字符串拆分实现,逻辑直观且易于维护
  • 自动处理可变数量的赛事和马匹数据
  • 将各字段转换为对应的数据类型(整数/浮点数)

内容的提问来源于stack exchange,提问作者smelling lady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:20:27