Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用regex提取此表单的值_Python_Python 3.x_Regex - Fatal编程技术网

Python 使用regex提取此表单的值

Python 使用regex提取此表单的值,python,python-3.x,regex,Python,Python 3.x,Regex,我有几个文件,每个文件(文件中的某个地方)都包含一行,看起来像: Item Number(s) 010314565 或 或 换句话说,项目编号,后面是数字列表(每个数字可以以0开头),可以用“和”分隔,也可以用逗号分隔,有时它们之间有空格,但并不总是有一致的空格 这对Python正则表达式来说太重了还是可行 从文件中提取所有[\d]+非常简单,但我不需要整个文件中的每个数字,只需要“项目编号”后面的数字 还是在文件的每一行上迭代,直到找到项目编号,然后在上面运行findall更好?这是一种方

我有几个文件,每个文件(文件中的某个地方)都包含一行,看起来像:

Item Number(s) 010314565

换句话说,
项目编号
,后面是数字列表(每个数字可以以0开头),可以用“和”分隔,也可以用逗号分隔,有时它们之间有空格,但并不总是有一致的空格

这对Python正则表达式来说太重了还是可行

从文件中提取所有
[\d]+
非常简单,但我不需要整个文件中的每个数字,只需要“项目编号”后面的数字


还是在文件的每一行上迭代,直到找到项目编号,然后在上面运行
findall
更好?

这是一种方法,它会得到所有的编号。在不拆分它们的情况下,您所需要做的就是遍历这些行并为每一行运行正则表达式。或者在整个文件上全局运行它,然后使用delimeters

import re

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

这是一种方法,它得到所有的数字。在不拆分它们的情况下,您所需要做的就是遍历这些行并为每一行运行正则表达式。或者在整个文件上全局运行它,然后使用delimeters

import re

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

首先查找
项目编号
,删除此项和之前的任何内容,然后在剩余字符串中搜索编号

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']

首先查找
项目编号
,删除此项和之前的任何内容,然后在剩余字符串中搜索编号

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']

分两步做。首先检查行是否以
项目编号开始
,然后使用regexp提取编号。您可以使用与
项目编号匹配的lookbehind来执行此操作。
,但lookbehind必须为固定长度。分两步执行。首先检查行是否以
项目编号开始
,然后使用regexp提取编号。您可以使用与
项目编号匹配的lookbehind执行此操作。
,但lookbehind必须是固定长度。