Python | Eliminación de caracteres no deseados de la string

El problema genérico al que se enfrentan los programadores es eliminar un carácter de toda la string. Pero a veces el requisito está muy por encima y exige la eliminación de más de 1 carácter, sino una lista de dichos caracteres maliciosos. Estos pueden ser en forma de caracteres especiales para reconstruir contraseñas válidas y muchas otras aplicaciones posibles. Analicemos ciertas formas de realizar esta tarea en particular.
Método n.º 1: Usar replace() 
Se puede usar replace() dentro de un ciclo para verificar si hay un bad_char y luego reemplazarlo con la string vacía y, por lo tanto, eliminarlo. Este es el enfoque más básico e ineficiente desde el punto de vista del rendimiento.
 

Python3

# Python3 code to demonstrate
# removal of bad_chars
# using replace()
 
# initializing bad_chars_list
bad_chars = [';', ':', '!', "*", " "]
 
# initializing test string
test_string = "Ge;ek * s:fo ! r;Ge * e*k:s !"
 
# printing original string
print ("Original String : " + test_string)
 
# using replace() to
# remove bad_chars
for i in bad_chars :
    test_string = test_string.replace(i, '')
 
# printing resultant string
print ("Resultant list is : " + str(test_string))

Producción : 
 

Original String : Ge;ek*s:fo!r;Ge*e*k:s!
Resultant list is : GeeksforGeeks

Método #2: Usando join() + generador 
Usando join() rehacemos la string. En la función de generador, especificamos la lógica para ignorar los caracteres en bad_chars y, por lo tanto, construir una nueva string libre de caracteres incorrectos.
 

Python3

# Python3 code to demonstrate
# removal of bad_chars
# using join() + generator
 
# initializing bad_chars_list
bad_chars = [';', ':', '!', "*", " "]
 
# initializing test string
test_string = "Ge;ek * s:fo ! r;Ge * e*k:s !"
 
# printing original string
print ("Original String : " + test_string)
 
# using join() + generator to
# remove bad_chars
test_string = ''.join(i for i in test_string if not i in bad_chars)
 
# printing resultant string
print ("Resultant list is : " + str(test_string))

Producción : 
 

Original String : Ge;ek*s:fo!r;Ge*e*k:s!
Resultant list is : GeeksforGeeks

Método n.º 3: usar translate() 
La forma más elegante de realizar esta tarea en particular, este método se usa básicamente para lograr la solución a este tipo de problemas, podemos traducir cada bad_char a una string vacía y obtener una string filtrada.
 

Python3

# Python3 code to demonstrate
# removal of bad_chars
# using translate()
import string
# initializing bad_chars_list
bad_chars = [';', ':', '!', "*"]
 
# initializing test string
test_string = "Ge;ek * s:fo ! r;Ge * e*k:s !"
 
# printing original string
print ("Original String : " + test_string)
 
# using translate() to
# remove bad_chars
delete_dict = {sp_character: '' for sp_character in string.punctuation}
delete_dict[' '] = ''
table = str.maketrans(delete_dict)
test_string = test_string.translate(table)
 
# printing resultant string
print ("Resultant list is : " + str(test_string))

Producción : 
 

Original String : Ge;ek*s:fo!r;Ge*e*k:s!
Resultant list is : GeeksforGeeks

Método #4: Uso de filter() 
Esta es otra solución para realizar esta tarea. Usando la función lambda, la función de filtro puede eliminar todos los bad_chars y devolver la string refinada deseada.
 

Python3

# Python3 code to demonstrate
# removal of bad_chars
# using filter()
 
# initializing bad_chars_list
bad_chars = [';', ':', '!', "*"]
 
# initializing test string
test_string = "Ge;ek*s:fo!r;Ge*e*k:s!"
 
# printing original string
print("Original String : " + test_string)
 
# using filter() to
# remove bad_chars
test_string = ''.join((filter(lambda i: i not in bad_chars, test_string)))
# printing resultant string
print("Resultant list is : " + str(test_string))

Producción : 
 

Original String : Ge;ek*s:fo!r;Ge*e*k:s!
Resultant list is : GeeksforGeeks

Método #5: Uso de la función re.sub(): La expresión regular se usa para identificar el carácter incorrecto en la string y la función re.sub se usa para reemplazar el bad_char de la string. 

Python3

# Python3 code to demonstrate
# removal of bad character
# Using re.sub()
import re
 
# initializing string
test_str = "Ge;ek * s:fo ! r;Ge * e*k:s !"
 
# Bad character list
bad_char = [";", "!", "*", ":", " "]
 
# printing original string
print("The original string is : " + test_str)
 
# using re.sub()
# remove bad_char from string
temp = ''
for i in bad_char:
    temp+= i;
res = re.sub(rf'[{temp}]', '', test_str)
 
# printing result
print("The strings after extra space removal : " + str(res))
The original string is : Ge;ek * s:fo ! r;Ge * e*k:s !
The strings after extra space removal : GeeksforGeeks

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *