📜  获取所有数字 (1)

📅  最后修改于: 2023-12-03 14:57:15.100000             🧑  作者: Mango

获取所有数字

在程序开发中,经常需要从字符串或列表中获取其中所有的数字。以下是几种常用方法:

方法一:使用正则表达式

正则表达式是一种强大的字符串处理工具,可以方便地从字符串中获取特定模式的内容。下面是获取字符串中所有数字的正则表达式:

import re

string = 'abc123def456ghi789'
numbers = re.findall('\d+', string)
print(numbers)

输出:

['123', '456', '789']

说明:

  • re.findall(pattern, string):使用正则表达式 patternstring 中查找所有匹配的子字符串,并以列表形式返回。

  • \d 表示任意一个数字,+ 表示重复一次或多次。

方法二:使用字符串判断和转换

在字符串中判断每个字符是否为数字,如果是,则转换成数字类型并加入结果列表。以下是示例代码:

string = 'abc123def456ghi789'
numbers = []
for char in string:
    if char.isdigit():
        numbers.append(int(char))
print(numbers)

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

说明:

  • .isdigit():判断字符是否为数字,返回布尔值。

  • int(char):将字符转换成整型。

方法三:使用列表推导式和字符串判断

使用列表推导式遍历字符串中的字符,并使用字符串判断是否为数字,如果是,则转换成数字类型并放入结果列表中。以下是示例代码:

string = 'abc123def456ghi789'
numbers = [int(char) for char in string if char.isdigit()]
print(numbers)

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

说明:

  • 列表推导式的形式为 [expression for item in iterable if condition],可以用一行代码实现循环构建列表的功能。

以上三种方法都可以获取字符串中所有数字,具体哪种方法使用取决于具体的需求和实现复杂度。如果需要提取更复杂的模式,建议使用正则表达式。如果只需要简单地提取字符串中的单个数字,直接使用字符串方法即可。