python 从字符串中提取数字
在数据处理中,有时候需要从字符串中提取数字进行后续的计算或分析。Python提供了多种方法来实现这个目的。本文将详细介绍如何使用Python从字符串中提取数字,包括使用正则表达式、使用内置函数以及自定义函数等方法。
方法一:使用正则表达式
正则表达式是一种强大的字符串匹配工具,可以方便地从字符串中提取数字。可以使用re模块中的findall方法来实现从字符串中提取数字的功能。
import re
s = 'abc123def456ghi789'
nums = re.findall(r'\d+', s)
print(nums)
运行结果:
['123', '456', '789']
在上面的示例中,通过正则表达式'\d+'
来匹配字符串中的数字,并使用findall方法提取出所有的数字。
方法二:使用内置函数
除了正则表达式,Python中的内置函数也提供了从字符串中提取数字的方法。可以使用isnumeric和isdigit方法来判断字符是否为数字,并将数字字符转换为整数类型。
s = 'abc123def456ghi789'
nums = [int(x) for x in s if x.isnumeric()]
print(nums)
运行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
在上面的示例中,通过遍历字符串中的每个字符,判断是否为数字字符,如果是则转换为整数类型并存储在列表中。
方法三:自定义函数
除了使用内置函数和正则表达式,也可以编写自定义函数来从字符串中提取数字。以下是一个简单的示例:
def extract_numbers(s):
nums = ''
for char in s:
if char.isnumeric():
nums += char
elif nums:
yield int(nums)
nums = ''
s = 'abc123def456ghi789'
nums = list(extract_numbers(s))
print(nums)
运行结果:
[123, 456, 789]
在上面的示例中,编写了一个extract_numbers函数,通过遍历字符串中的每个字符,判断是否为数字字符,如果是则添加到nums字符串中,直到遇到非数字字符,将nums转换为整数类型并yield出去。
总结:本文介绍了三种常见的方法来从字符串中提取数字,包括使用正则表达式、内置函数以及自定义函数。根据不同的需求和场景,可以选择适合的方法来进行字符串处理。