在python中从字符串中提取数字
我想从Python中这样的字符串中提取一个数字:在python中从字符串中提取数字,python,regex,Python,Regex,我想从Python中这样的字符串中提取一个数字: string1 = 154787xs.txt 我想从那里得到154787。我用的是: searchPattern = re.compile('\d\d\d\d\d\d(?=xs)') m = searchPattern.search(string1) number = m.group() 但是我没有得到正确的值。而且数字的数量可能会改变 我做错了什么?只需使用以下模式 searchPattern = re.compile(r'\d+(?=xs
string1 = 154787xs.txt
我想从那里得到154787
。我用的是:
searchPattern = re.compile('\d\d\d\d\d\d(?=xs)')
m = searchPattern.search(string1)
number = m.group()
但是我没有得到正确的值。而且数字的数量可能会改变
我做错了什么?只需使用以下模式
searchPattern = re.compile(r'\d+(?=xs)')
说明:
>>> import re
>>> searchPattern = re.compile(r'\d+(?=xs)')
>>> m = searchPattern.search(string1)
>>> m
<_sre.SRE_Match object at 0x7f6047f66370>
>>> number = m.group()
>>> number
'154787'
匹配一个或多个数字\d+
Lookahead断言数字后面的字符必须是(?=xs)
xs
>>> import re
>>> searchPattern = re.compile(r'\d+(?=xs)')
>>> m = searchPattern.search(string1)
>>> m
<_sre.SRE_Match object at 0x7f6047f66370>
>>> number = m.group()
>>> number
'154787'
>>重新导入
>>>searchPattern=re.compile(r'\d+(?=xs'))
>>>m=searchPattern.search(string1)
>>>m
>>>编号=m.组()
>>>数
'154787'
你说你没有得到正确的值是什么意思?
您的代码与字符串'154787'
匹配成功。
也许您希望number
成为int
?在这种情况下,请使用:
number = int(m.group())
顺便说一下,正则表达式可以写成
searchPattern = re.compile('(\d+)xs')
m = searchPattern.search(string1)
if m:
number = int(m.group(1))
我得到了正确的值<代码>编号==“154787”。你能更清楚地说明你认为的问题是什么吗?此外,您还可以使用指定字符的重复次数,例如\d{6}
(正好六次)或\d{4,8}
(介于四到八次之间)。