我有几个文件,每个文件都包含(文件中的某个位置)一行,如下所示: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']
潇湘沐
TA贡献1816条经验 获得超6个赞
这是一种方法,它获取所有数字。在不拆分它们的情况下,您所需要做的就是迭代这些行并为每行运行正则表达式。and或者在整个文件上全局运行它,然后使用分隔符和处理分割,
import re
matches = re.findall(r"Item Number\(s\) ([\d, and]+)",stringOrLine)
添加回答
举报
0/150
提交
取消