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

如何从集合列表中提取指定字符串?Python re模块求助

问题描述

需要从给定的Python字典列表中提取每个字典内subjects_affected对应的数值,期望得到结果['4','7']。尝试使用Python的re模块实现,但编写的代码无法达成需求,寻求帮助。

给定的字典列表:

[{'group_id': 'E1', 'subjects_affected': '4', 'subjects_at_risk': '104'},
 {'group_id': 'E2', 'subjects_affected': '7', 'subjects_at_risk': '105'}]

当前代码:

import re

b=[{'group_id': 'E1', 'subjects_affected': '0', 'subjects_at_risk': '104'},
   {'group_id': 'E2', 'subjects_affected': '0', 'subjects_at_risk': '105'}]

re.findall(r'b\{\aff+\b', b)
解决方案

你完全没必要用正则表达式处理这个需求——这是结构化的字典列表数据,直接遍历提取键值即可,正则是用来处理非结构化字符串的,在这里属于用错工具。

正确代码如下:

# 目标字典列表
data = [{'group_id': 'E1', 'subjects_affected': '4', 'subjects_at_risk': '104'},
        {'group_id': 'E2', 'subjects_affected': '7', 'subjects_at_risk': '105'}]

# 提取目标数值
result = [item['subjects_affected'] for item in data]
print(result)  # 输出: ['4', '7']

错误说明

原代码有两个核心问题:

  1. re.findall只能处理字符串,直接传入字典列表会触发类型错误;
  2. 正则表达式的写法完全不符合需求逻辑,没有匹配目标内容的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:10:43