Python 如何从字符串中提取数字
有几种方法可以从Python的字符串中提取数字。一种提取字符串中数字的方法是使用正则表达式。正则表达式是一种可以用来匹配和操作字符串的模式。以下是一个使用正则表达式从字符串中提取所有数字的示例代码片段:
使用re.findall()函数
示例
在此示例中,我们使用re.findall()函数来搜索文本字符串中所有数字的出现。正则表达式\d+\.\d+|\d+匹配浮点数和整数。
import re
text = "The price of the book is $29.99"
numbers = re.findall('\d+\.\d+|\d+', text)
print(numbers)
输出
['29.99']
使用isdigit()方法
从字符串中提取数字的另一种方法是使用isdigit()方法,该方法返回True如果字符串中的所有字符都是数字。
示例:
在这个示例中,我们使用split()方法将文本字符串拆分为单词列表。然后,我们遍历每个单词,并使用isdigit()方法检查它是否是一个数字。如果是数字,我们将其转换为整数后添加到数字列表中。
text = "There are 10 apples in the basket"
numbers = []
for word in text.split():
if word.isdigit():
numbers.append(int(word))
print(numbers)
输出
[10]
使用正则表达式
您可以在Python中使用re模块使用正则表达式从字符串中提取数字。以下是一个例子:
示例
这段代码将输出在字符串中出现的数字列表:[3, 1, 2, 3]。正则表达式’\d+’匹配字符串中的一个或多个数字。
import re
string = "There are 3 numbers in this string: 1, 2, and 3."
numbers = re.findall('\d+', string)
print(numbers)
输出
['3', '1', '2', '3']
使用循环和isdigit()方法
你可以通过循环遍历字符串中的每个字符,并使用isdigit()方法检查它是否为数字。
示例
string = "There are 3 numbers in this string: 1, 2, and 3."
numbers = []
current_number = ""
for char in string:
if char.isdigit():
current_number += char
elif current_number:
numbers.append(int(current_number))
current_number = ""
if current_number:
numbers.append(int(current_number))
print(numbers)
输出
[3, 1, 2, 3]
使用split()和isdigit()方法
如果数字是由非数字字符分隔的,可以使用这些字符将字符串拆分,然后检查每个结果子字符串是否为数字。
示例
string = "There are 3 numbers in this string: 1, 2, and 3."
numbers = []
for substring in string.split():
if substring.isdigit():
numbers.append(int(substring))
print(numbers)
输出
[3]
使用isnumeric()方法和for循环
示例
此代码创建一个名为numbers的空列表,然后将输入字符串拆分为单词列表。然后循环遍历列表中的每个单词,并使用isnumeric()方法检查它是否是一个数字。如果是一个数字,则将其添加到numbers列表中。最后,打印出numbers列表。
my_string = "I have 2 apples and 3 oranges"
numbers = []
for word in my_string.split():
if word.isnumeric():
numbers.append(int(word))
print(numbers)
输出
[2, 3]
使用re.findall()函数
示例
此代码导入re模块,并使用re.findall()函数在输入字符串中找到所有数字的实例。然后,使用列表推导式将得到的数字字符串列表转换为整数列表。最后,打印出数字列表。
import re
my_string = "I have 2 apples and 3 oranges"
numbers = [int(num) for num in re.findall(r'\d+', my_string)]
print(numbers)
输出
[2, 3]
使用生成器表达式和map()函数:
示例
该代码使用生成器表达式和map()函数来创建一个整数列表。生成器表达式遍历输入字符串中的每个单词,并只返回那些由数字组成的单词,使用isdigit()方法进行判断。map()函数对每个数字字符串应用int()函数,将其转换为整数。最后,打印出结果列表中的整数。
my_string = "I have 2 apples and 3 oranges"
numbers = list(map(int, (word for word in my_string.split() if word.isdigit())))
print(numbers)
输出
[2, 3]