Python|从字符串中提取数字
很多时候,在处理字符串时,我们会遇到这个问题,我们需要获取所有出现的数字。这种类型的问题通常发生在竞争性编程和 Web 开发中。让我们讨论一些可以解决这个问题的方法。
方法 #1:使用列表理解 + isdigit()
+ split()
这个问题可以通过使用 split函数将字符串转换为列表来解决,然后列表推导可以帮助我们遍历列表,isdigit函数有助于从字符串中获取数字。
# Python3 code to demonstrate
# getting numbers from string
# using List comprehension + isdigit() +split()
# initializing string
test_string = "There are 2 apples for 4 persons"
# printing original string
print("The original string : " + test_string)
# using List comprehension + isdigit() +split()
# getting numbers from string
res = [int(i) for i in test_string.split() if i.isdigit()]
# print result
print("The numbers list is : " + str(res))
输出 :
The original string : There are 2 apples for 4 persons
The numbers list is : [2, 4]
方法 #2:使用re.findall()
这个特殊问题也可以使用Python regex 来解决,我们可以使用 findall函数来使用匹配的 regex 字符串检查出现的数字。
# Python3 code to demonstrate
# getting numbers from string
# using re.findall()
import re
# initializing string
test_string = "There are 2 apples for 4 persons"
# printing original string
print("The original string : " + test_string)
# using re.findall()
# getting numbers from string
temp = re.findall(r'\d+', test_string)
res = list(map(int, temp))
# print result
print("The numbers list is : " + str(res))
输出 :
The original string : There are 2 apples for 4 persons
The numbers list is : [2, 4]