从python中的字符串中提取一个数字

时间:2014-08-06 13:26:44

标签: python regex

我想在Python中从这样的字符串中提取一个数字:

string1 = 154787xs.txt

我想从那里得到154787。我正在使用这个:

searchPattern = re.compile('\d\d\d\d\d\d(?=xs)')
m = searchPattern.search(string1)
number = m.group()

但我没有得到正确的价值。数字位数也可能会改变......

我做错了什么?

2 个答案:

答案 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))