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