正则表达式捕获文本中的数字

时间:2018-01-23 20:52:38

标签: python regex

我想用这样的模式提取文本中的数字:

About 181,000 results

如果我用空格分隔这些,当我尝试将数字转换为整数int('181,000')时,我会收到错误。如何正确捕获此数字并将其转换为整数?

2 个答案:

答案 0 :(得分:2)

将经常被忽视的locale模块与atoi()

一起使用
import re, locale
from locale import atoi

locale.setlocale(locale.LC_ALL, 'en_US')

string = "About 181,000 results"

rx = re.compile(r'\b\d+(?:,\d+)*\b')

numbers = [atoi(m.group(0)) for m in rx.finditer(string)]
print(numbers)

哪个收益

[181000]

答案 1 :(得分:1)

如果没有正则表达式,您可以实现O(n)解决方案:

>>> s = "About 181,000 results"
>>> int(''.join(i for i in s if i.isdigit()))
181000