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

我有几个文件,每个文件都包含(文件中的某个位置)一行,如下所示:

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


子衿沉夜
浏览 101回答 2
2回答

慕尼黑5688855

首先查找Item Number(s)并删除该字符串及其之前的所有内容,然后在剩余的字符串中搜索数字。import res =  "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']

潇湘沐

这是一种方法,它获取所有数字。在不拆分它们的情况下,您所需要做的就是迭代这些行并为每行运行正则表达式。and或者在整个文件上全局运行它,然后使用分隔符和处理分割,import rematches = re.findall(r"Item Number\(s\) ([\d, and]+)",stringOrLine)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python