我想在Python中从这样的字符串中提取一个数字:
string1 = 154787xs.txt
我想从那里得到154787
。我正在使用这个:
searchPattern = re.compile('\d\d\d\d\d\d(?=xs)')
m = searchPattern.search(string1)
number = m.group()
但我没有得到正确的价值。数字位数也可能会改变......
我做错了什么?
答案 0 :(得分:2)
只需使用以下模式,
searchPattern = re.compile(r'\d+(?=xs)')
<强>解释强>
\d+
匹配一个或多个数字。(?=xs)
Lookahead声称跟随数字的字符必须是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'
答案 1 :(得分:1)
当你说你没有得到正确的价值时,你是什么意思?
您的代码成功匹配字符串 '154787'
。
也许您希望number
成为int
?在这种情况下使用:
number = int(m.group())
顺便说一句,正则表达式可以写成
searchPattern = re.compile('(\d+)xs')
m = searchPattern.search(string1)
if m:
number = int(m.group(1))