Python 提取带有数字的字符串

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()方法来应用条件。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程