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.