我想用这样的模式提取文本中的数字:
About 181,000 results
如果我用空格分隔这些,当我尝试将数字转换为整数int('181,000')
时,我会收到错误。如何正确捕获此数字并将其转换为整数?
答案 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