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