Python 提取带有数字的字符串
在本文中,我们将学习如何在python中提取带有数字的字符串。
使用的方法
以下是完成此任务的各种方法:
- 使用列表推导,any()和isdigit()函数
-
使用any(),filter()和lambda函数
-
不使用任何内置函数
-
使用ord()函数
示例
假设我们已经输入了一个 包含字符串的列表 。现在我们将使用以上方法从输入列表中提取包含数字的字符串。
输入
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
输出
List of Strings containing any digits:
['hello562', 'python20', '100']
在上述输入列表中,元素’hello562’,’python20’,’100’包含数字。因此,它们从输入列表中提取出来。
方法1:使用列表推导,any()和isdigit()函数
步骤
执行所需任务的算法/步骤如下:
- 创建一个变量来存储字符串的输入列表
-
打印输入列表。
-
使用 列表推导 遍历输入列表的元素,并使用 any() 函数(如果可迭代对象中的任何项为真则返回True,否则返回False)和 isdigit() 函数逐个字符检查字符串是否包含任何数字字符
-
isdigit()函数 - 如果所有字符都是数字,则isdigit()方法返回True;否则返回False。
-
打印包含任何数字的结果字符串列表。
示例
以下程序使用列表推导,any()和isdigit()函数返回一个提取包含数字的字符串的列表:
# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
# printing input list
print("Input list:", inputList)
# traversing through list elements and checking if the string
# contains any digit character
outputList = [item for item in inputList if any(c for c in item if c.isdigit())]
# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)
输出
执行以上程序后,将生成以下输出结果:
Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']
方法2:使用any(),filter()和lambda函数
filter()函数 - 使用确定序列中的每个元素是true还是false的函数来过滤指定的序列。
lambda函数
lambda函数是一个匿名函数,非常简单。
lambda函数可以具有无限/任意数量的参数,但只能有一个表达式。
语法
lambda arguments : expression
示例
以下程序使用any()、filter()和lambda函数从输入列表中提取包含数字的字符串,并返回一个列表:
# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
# printing input list
print("Input list:", inputList)
# filtering the list elements if any string character is a digit
outputList = list(filter(lambda s: any( e for e in s if e.isdigit()), inputList))
# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)
输出
执行后,上述程序将生成以下输出:
Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']
方法3:不使用任何内置函数
replace()函数 - 返回一个字符串的副本,将所有旧子字符串替换为新的子字符串。
语法
string.replace(old, new, count)
示例
以下程序返回一个列表,该列表提取输入列表中包含数字的字符串,而不使用任何内置函数 –
# function that returns string with digits by accepting input string as an argument
def newFunction(str):
# initializing all digits
digitsStr= "0123456789"
# storing the string passed to the function in a temp variable
temp = str
# traversing through each digit in the above digits string
for d in digitsStr:
# replacing that digit with space
str = str.replace(d, "")
# checking whether the length of the temp variable string is not equal to the passed string
if(len(temp) != len(str)):
# returning true if the condition is true
return True
# else returning false
return False
# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
# printing input list
print("Input list:", inputList)
# empty list for storing list elements containing digits
outputList = []
# traversing through each element of the input list
for element in inputList:
# checking whether the above defined newFunction() returns true
if newFunction(element):
# appending that element to the output list
outputList.append(element)
# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)
输出
在执行上述程序时,将生成以下输出:
Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']
方法4:使用ord()函数
ord()函数 - 将给定字符的Unicode码作为数字返回。
示例
以下程序返回一个列表,该列表提取输入列表中包含数字的字符串,而不使用ord()函数 –
# input list of strings
inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
# printing input list
print("Input list:", inputList)
# empty list for storing list elements containing digits
outputList = []
# traversing through each element of the input list
for element in inputList:
# traversing through each character of the current element
for c in element:
# checking whether the ASCII value of char is greater than or
# equal to 0 and less than or equal to 9
if(ord(c) >= ord('0') and ord(c) <= ord('9')):
# appending that element to output list
outputList.append(element)
# breaking the loop
break
# printing resultant list of Strings containing any digits
print("List of Strings containing any digits:\n", outputList)
输出
执行上述程序后,将会生成以下输出:
Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']
结论
从给定的字符串列表中,我们学到了提取包含数字的字符串元素的4种不同方法。我们还学会了如何根据条件过滤列表。我们还学到了,与其使用嵌套列表,可以使用lambda函数内部的any()方法来应用条件。