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

标签 python regex

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

About 181,000 results

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

最佳答案

将经常被忽视的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]

关于python - 正则表达式捕获文本中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48410616/

相关文章:

regex - 使用 regex/grep/awk/sed 解析复杂的调试日志

python - 为 itertools 重复一个 numpy 数组指定的次数

python - 是否有将 VB 转换为脚本语言的工具,例如Python 还是 ruby ?

python - 如果第一个元素重复,则从列表中删除元组的大多数 pythonic 方法

python - 属性错误: 'NoneType' object has no attribute 'reshape'

java - 在Java中使用Scanner,当字符串不是正则表达式模式时,如何使用hasNext(aString)?

regex - 如何使用 Perl 和 Selenium 在 XPath 文本查询中转义撇号?

python - 如何为 Azure tts (mstts) 设置命名空间

javascript - 为什么这个组不捕获出现在括号中的所有项目?

python - 多行 python 正则表达式