为了账号安全,请及时绑定邮箱和手机立即绑定

使用正则表达式提取这种形式的值

使用正则表达式提取这种形式的值

子衿沉夜 2023-10-11 16:10:36
我有几个文件,每个文件都包含(文件中的某个位置)一行,如下所示:Item Number(s) 010314565或者Item Number(s) 92349252 and 30239429434或者Item Number(s) 124029354,345340332,  234325923, 2121124换句话说,后面Item Number(s) 是一个数字列表(每个数字都可以从 0 开始),这些数字可以用“和”分隔或用逗号分隔,有时它们之间有空格,但空格量并不总是一致。这对于 Python 正则表达式来说太重了还是可行?从文件中提取所有数字很容易[\d]+,但我不需要整个文件中的每个数字,只需要“Item Number(s)”之后的数字。或者最好迭代文件的每一行,直到找到项目编号,然后对其运行findall?
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

首先查找Item Number(s)并删除该字符串及其之前的所有内容,然后在剩余的字符串中搜索数字。


import re

s =  "this part 123 should be ignored Item Number(s) 92349252 and 30239429434, 124029354,345340332,  234325923 2121124"

re.findall(r'.*?(\d+)', re.sub(r'.*?Item Number\(s\)', '', s))

结果


['92349252', '30239429434', '124029354', '345340332', '234325923', '2121124']


查看完整回答
反对 回复 2023-10-11
?
潇湘沐

TA贡献1816条经验 获得超6个赞

这是一种方法,它获取所有数字。在不拆分它们的情况下,您所需要做的就是迭代这些行并为每行运行正则表达式。and或者在整个文件上全局运行它,然后使用分隔符和处理分割,


import re


matches = re.findall(r"Item Number\(s\) ([\d, and]+)",stringOrLine)


查看完整回答
反对 回复 2023-10-11
  • 2 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信