📜  在字符串中查找数字 (1)

📅  最后修改于: 2023-12-03 15:37:41.767000             🧑  作者: Mango

在字符串中查找数字

在编程中,有时候需要从字符串中找出数字部分,本文将介绍几种常见的方法。

方法一:使用正则表达式

正则表达式是一种强大的文本匹配工具,可以用来匹配各种文本模式,包括数字。下面是一个匹配数字的正则表达式:

import re

s = "abc 123 def"
num = re.findall(r'\d+', s)
print(num)

输出结果:

['123']

这段代码使用了 re 模块中的 findall 函数,该函数将返回匹配某个正则表达式的所有子串。正则表达式 \d+ 表示匹配至少一个数字,可以匹配到 123 这个数字。

方法二:使用列表推导式

除了使用正则表达式之外,还可以使用列表推导式来查找字符串中的数字。代码如下:

s = "abc 123 def"
num = [int(x) for x in s.split() if x.isdigit()]
print(num)

输出结果:

[123]

这段代码首先调用了字符串的 split 方法将字符串拆分成一个个单词,然后使用列表推导式过滤出所有的数字,最后使用 int 函数将字符串转换成数字。

方法三:使用循环判断

除了正则表达式和列表推导式之外,还可以使用循环和判断语句来查找字符串中的数字。代码如下:

s = "abc 123 def"
num = []
current_num = ""
for c in s:
    if c.isdigit():
        current_num += c
    elif current_num:
        num.append(int(current_num))
        current_num = ""
if current_num:
    num.append(int(current_num))
print(num)

输出结果与前两种方法一样:

[123]

这段代码使用了一个循环遍历字符串的每个字符,如果这个字符是数字,则将它加入到 current_num 变量中,如果不是数字,就将 current_num 变量中的数字转换成整数加入到 num 列表中。需要注意的是,要在循环结束后再判断一次 current_num 变量中是否还有数字需要加入到 num 列表中。

总结

以上三种方法都可以用来查找字符串中的数字,其中正则表达式方法最为简洁,但需要熟悉正则表达式的语法;列表推导式方法虽然简洁,但在过滤非数字字符时可能需要更详细的判断;循环判断方法则更为灵活,可以适用于各种场景。