Python Regex:我怎样才能捕捉到带有空格的大数字?
我正在尝试使用Python正则表达式从字符串中捕获所有数字。我所说的数字是指整数和浮点数(使用Python Regex:我怎样才能捕捉到带有空格的大数字?,python,regex,recursion,regex-recursion,Python,Regex,Recursion,Regex Recursion,我正在尝试使用Python正则表达式从字符串中捕获所有数字。我所说的数字是指整数和浮点数(使用、或)。 我设法用这个正则表达式完成了它:([0-9]+[\,[124;\.][0-9]+[0-9]+) 但我有一个问题,我需要它来匹配大数字和其中的空格。我的意思是20000或5000000。这些数字可能非常大,有很多空间。我不知道有多少。但是数字之间总是有一个空格,不再有了。例如:20 30=这将是两个不同的数字 我想我需要某种递归模式(?R),但我不知道如何使用它 有人能帮忙吗?:) 重新导入 编
、
或
)。
我设法用这个正则表达式完成了它:([0-9]+[\,[124;\.][0-9]+[0-9]+)
但我有一个问题,我需要它来匹配大数字和其中的空格。我的意思是20000
或5000000
。这些数字可能非常大,有很多空间。我不知道有多少。但是数字之间总是有一个空格,不再有了。例如:20 30
=这将是两个不同的数字
我想我需要某种递归模式(?R)
,但我不知道如何使用它
有人能帮忙吗?:) 重新导入
编号='20 300 4 100 400 50'
res=re.findall(r'(\d*\s*),编号)
res=''.join(res.split)('')
打印(列表(映射(lambda x:int(x.replace('',)),res)))
-输出
[20300410040050]
您可以使用如下模式
(?
看
细节
(?-当前位置左侧不允许有数字或数字加逗号或句点
\d{1,3}
-一位、两位或三位数字
(?:\s\d{3})*
-零个或多个空格和三位数字序列
(?:[,.]\d+)
-可选出现、
或
,然后出现一个或多个数字
在中,您可以使用re.findall
:
重新导入
text=“5000、6123456345和6123456.345……我的意思是20000或500000。例如:2030”
打印(关于findall(r')(?这不适用于OP中由多个空格分隔的多个数字的情况,例如,number='20 3000 400
应给出('20','3000','400'))
但将给出'203000400'
您需要进一步增强,以涵盖OP的长数字情况,数字由一个空格分隔,并分组为三元组,例如数字='20 300 4 100 400 50'
应给出['20 300','4 100','4 00','50']
与当前给出['20','300','4','100','400','50']
(尽管我怀疑['20300','4100','400','50']
也可以接受。)