Búsqueda de sitios web

Programa Python para extraer cadenas con un dígito


En este artículo, aprenderemos cómo extraer cadenas con un dígito en Python.

Métodos utilizados

Los siguientes son los diversos métodos para realizar esta tarea:

  • Usando la comprensión de listas, funciones any() e isdigit()

  • Usando funciones any(), filter() y lambda

  • Sin utilizar ninguna función integrada

  • Usando la función ord()

Ejemplo

Supongamos que hemos tomado una lista de entrada que contiene cadenas. Ahora extraeremos cadenas que contengan un dígito en una lista de entrada utilizando los métodos anteriores.

Aporte

inputList = ['hello562', 'tutorialspoint', 'python20', 'codes', '100']

Producción

List of Strings containing any digits:
['hello562', 'python20', '100']

En la lista de entrada anterior, los elementos 'hello562', 'python20', '100' contienen dígitos. Por lo tanto, se extraen de la lista de entrada.

Método 1: uso de listas por comprensión, funciones any() e isdigit()

Algoritmo (pasos)

A continuación se detallan el algoritmo/pasos a seguir para realizar la tarea deseada.

  • Cree una variable para almacenar la lista de entrada de cadenas

  • Imprima la lista de entrada.

  • Utilice la Comprensión de lista para recorrer los elementos de la lista de entrada y comprobar si la cadena contiene algún dígito carácter por carácter utilizando la función cualquier() (devuelve Verdadero si algún elemento en un iterable es verdadero, de lo contrario devuelve Falso) y la función isdigit()

  • Función isdigit() - Si todos los caracteres son dígitos, el método isdigit() devuelve True; de lo contrario, devuelve Falso.

  • Imprima la lista resultante de cadenas que contengan dígitos.

Ejemplo

El siguiente programa devuelve una lista que extrae las cadenas que contienen dígitos en una lista de entrada utilizando las funciones de comprensión de listas, any() e 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)

Producción

Al ejecutarse, el programa anterior generará el siguiente resultado:

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Método 2: usar las funciones any(), filter() y lambda

función filter(): filtra la secuencia especificada utilizando una función que determina si cada elemento de la secuencia debe ser verdadero o falso.

Función lambda

Una función lambda es una función anónima que es pequeña.

Una función lambda puede tener un número ilimitado o cualquier número de argumentos, pero solo una expresión.

Sintaxis

lambda arguments : expression

Ejemplo

El siguiente programa devuelve una lista que extrae las cadenas que contienen dígitos en una lista de entrada usando las funciones any(), filter() y 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)

Producción

Al ejecutarse, el programa anterior generará el siguiente resultado:

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Método 3: sin utilizar ninguna función integrada

función reemplazar(): devuelve una copia de la cadena que reemplaza todas las apariciones de una subcadena antigua con otra subcadena nueva.

Sintaxis

string.replace(old, new, count)

Ejemplo

El siguiente programa devuelve una lista que extrae las cadenas que contienen dígitos en una lista de entrada sin utilizar ninguna función integrada:

# 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)

Producción

Al ejecutarse, el programa anterior generará el siguiente resultado:

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Método 4: usar la función ord()

Función ord(): devuelve el código Unicode de un carácter determinado como un número.

Ejemplo

El siguiente programa devuelve una lista que extrae las cadenas que contienen dígitos en una lista de entrada sin usar la función 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)

Producción

Al ejecutarse, el programa anterior generará el siguiente resultado:

Input list: ['hello562', 'tutorialspoint', 'python20', 'codes', '100']
List of Strings containing any digits:
['hello562', 'python20', '100']

Conclusión

De la lista de cadenas proporcionada, hemos aprendido 4 formas diferentes de extraer elementos de cadena que contienen dígitos. También aprendimos cómo filtrar la lista según la condición. También aprendimos que, en lugar de usar listas anidadas, se puede usar cualquier método() dentro de la función lambda para aplicar condiciones.

Artículos relacionados: