我想提取字符串中包含的所有数字.正则表达式和isdigit()方法哪个更适合这个目的?

示例:

line = "hello 12 hi 89"

结果:

[12, 89]

推荐答案

如果只想提取正整数,请try 以下操作:

>>> txt = "h3110 23 cat 444.4 rabbit 11 2 dog"
>>> [int(s) for s in txt.split() if s.isdigit()]
[23, 11, 2]

我认为这比regex示例要好,因为您不需要另一个模块,而且它更具可读性,因为您不需要解析(和学习)regex mini-language.

这将无法识别浮点数、负整数或十六进制格式的整数.如果你不能接受这些限制,jmnas's answer below就行了.

Python相关问答推荐

替换字符串中的多个重叠子字符串

在Python中处理大量CSV文件中的数据

Python上的Instagram API:缺少client_id参数"

如何让剧作家等待Python中出现特定cookie(然后返回它)?

未删除映射表的行

使可滚动框架在tkinter环境中看起来自然

数据抓取失败:寻求帮助

Python键入协议默认值

如何创建一个缓冲区周围的一行与manim?

Tkinter菜单自发添加额外项目

在极中解析带有数字和SI前缀的字符串

Pandas:计算中间时间条目的总时间增量

如何使用正则表达式修改toml文件中指定字段中的参数值

如何训练每一个pandaprame行的线性回归并生成斜率

来自Airflow Connection的额外参数

Django抛出重复的键值违反唯一约束错误

在不中断格式的情况下在文件的特定部分插入XML标签

为什么在生成时间序列时,元组索引会超出范围?

如何批量训练样本大小为奇数的神经网络?

Django REST框架+Django Channel->;[Errno 111]连接调用失败(';127.0.0.1';,6379)