Python 字符串只保留数字

在日常的编程工作中,经常会遇到需要从字符串中提取数字的情况。比如,需要从一个包含电话号码的字符串中提取出纯数字的电话号码;或者需要从一个包含货币金额的字符串中提取出纯数字的金额。Python 提供了多种方法来实现这一功能。本文将介绍三种常见的方法,并给出相应的代码示例。

方法一:使用正则表达式

正则表达式是一种强大的字符串匹配工具,可以用来匹配特定模式的字符串。使用 re 模块可以在 Python 中进行正则表达式的操作。下面是一个示例代码,演示了如何使用正则表达式来提取字符串中的数字:

import re

def extract_numbers(text):
    pattern = r'\d+'  # 匹配连续的数字
    numbers = re.findall(pattern, text)
    return numbers

text = "Today is 2022-05-01, the temperature is 25.5 degrees Celsius."
numbers = extract_numbers(text)
print(numbers)  # 输出结果:['2022', '05', '01', '25', '5']

在上述代码中,re.findall(pattern, text) 使用正则表达式 pattern 在文本 text 中查找匹配的内容,并将结果以列表形式返回。

方法二:使用列表解析

列表解析是一种简洁高效的写法,可以用来创建新的列表。通过遍历字符串的每个字符,判断是否为数字,并将数字字符添加到新的列表中,可以实现只保留数字的效果。下面是一个示例代码:

def extract_numbers(text):
    numbers = [char for char in text if char.isdigit()]
    return numbers

text = "Today is 2022-05-01, the temperature is 25.5 degrees Celsius."
numbers = extract_numbers(text)
print(numbers)  # 输出结果:['2', '0', '2', '2', '0', '5', '0', '1', '2', '5', '5']

在上述代码中,char.isdigit() 判断字符 char 是否为数字字符。

方法三:使用字符串的 join() 方法

字符串的 join() 方法可以将列表中的元素连接成一个新的字符串。使用列表解析遍历字符串的每个字符,判断是否为数字,并将数字字符添加到新的列表中,然后使用 join() 方法将列表中的元素连接起来,即可得到只包含数字的字符串。下面是一个示例代码:

def extract_numbers(text):
    numbers = ''.join([char for char in text if char.isdigit()])
    return numbers

text = "Today is 2022-05-01, the temperature is 25.5 degrees Celsius."
numbers = extract_numbers(text)
print(numbers)  # 输出结果:'20220501255'

在上述代码中,''.join() 将列表中的元素连接成一个新的字符串,连接符为空字符串。

通过上述三种方法的比较,我们可以看到正则表达式是一种功能强大、灵活性高的方法,适用于更为复杂的匹配情况。而使用列表解析和字符串的 join() 方法则更为简洁,适用于简单的字符串处理。根据具体的需求,选择合适的方法来提取字符串中的数字。

希望本文的介绍对您有所帮助!如有疑问,请随时留言。