我想提取字符串中包含的所有数字。哪个更适合此目的,正则表达式或 isdigit()
方法?
例子:
line = "hello 12 hi 89"
结果:
[12, 89]
原文由 pablouche 发布,翻译遵循 CC BY-SA 4.0 许可协议
我会使用正则表达式:
>>> import re
>>> re.findall(r'\d+', "hello 42 I'm a 32 string 30")
['42', '32', '30']
这也将匹配来自 bla42bla
的 42。如果您只想要由单词边界(空格、句点、逗号)分隔的数字,则可以使用 \b :
>>> re.findall(r'\b\d+\b', "he33llo 42 I'm a 32 string 30")
['42', '32', '30']
以数字列表而不是字符串列表结束:
>>> [int(s) for s in re.findall(r'\b\d+\b', "he33llo 42 I'm a 32 string 30")]
[42, 32, 30]
注意:这不适用于负整数
原文由 Vincent Savard 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
如果您只想提取正整数,请尝试以下操作:
我认为这比正则表达式示例更好,因为您不需要另一个模块,而且它更具可读性,因为您不需要解析(和学习) 正则表达式 mini-language 。
这将无法识别浮点数、负整数或十六进制格式的整数。如果您不能接受这些限制, 下面的 jmnas 答案 将起到作用。