Python从含多字符串元素的数组中提取千位数值的方法
问题说明
现有包含4个字符串元素的数组my_array,每个字符串混合了资产编号、日期、多类余额数值、规则标识、审批状态等文本、数字内容,需要从每个字符串中单独提取千位量级的数值,最终输出由所有提取结果组成的列表。
示例输入
my_array = ['STK72184 4/28/2022 50 from Exchange Balance, 50 from Earning Balance & 10 from Bonus 5000 Regular 10/20/2023 Approved 4/28/2022', 'STK725721 4/27/2022 50 from Exchange Balance, 40 from Earning Balance & 10 from Bonus Balance 5000 Regular 10/19/2023 Approved 4/27/2022', 'STK725721 4/27/2022 50 from Exchange Balance, 40 from Earning Balance & 10 from Bonus Balance 15000 Regular 10/19/2023 Approved 4/27/2022', 'STK722222 4/26/2022 50 from Exchange Balance, 40 from Earning Balance & 10 from Bonus Balance 10000 Regular 10/18/2023 Approved 4/26/2022']
预期输出
['5000', '5000', '15000', '10000']
实现方法
观察字符串规律可以发现,所有需要提取的千位量级数值都满足两个特征:长度≥4位、后面紧跟 Regular标识,用正则表达式可以直接精准匹配,不会误提取几十的小额余额、斜杠分隔的日期数字。
完整实现代码:
import re res = [] # 编译正则:匹配4位及以上数字,且后面紧跟空格+Regular match_pattern = re.compile(r'(\d{4,}) Regular') for single_str in my_array: target_num = match_pattern.search(single_str).group(1) res.append(target_num) print(res)
代码逻辑说明:
- 正则规则
\d{4,}直接过滤掉长度小于4的数字,天然排除50、40、10这类非千位数值 - 追加
Regular的位置限定,避免后续如果字符串里出现其他长数字时产生误匹配 - 逐行遍历数组提取匹配结果,运行后输出和预期完全一致
内容的提问来源于stack exchange,提问作者Rishi Pandey
相关产品推荐
相关产品推荐

