如何从集合列表中提取指定字符串?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']
错误说明
原代码有两个核心问题:
re.findall只能处理字符串,直接传入字典列表会触发类型错误;- 正则表达式的写法完全不符合需求逻辑,没有匹配目标内容的规则。
内容的提问来源于stack exchange,提问作者Samir
相关产品推荐
相关产品推荐

