Python: reemplaza diferentes caracteres en una string a la vez

Dada una asignación de caracteres que se reemplazarán con los valores correspondientes, realice todos los reemplazos a la vez, en una sola línea.

Entrada : test_str = ‘geeksforgeeks is best’, map_dict = {‘e’:’1′, ‘b’:’6′} 
Salida : g11ksforg11ks is 61st 
Explicación : todas las e se reemplazan por 1 y b por 6.
Entrada : test_str = ‘geeksforgeeks’, map_dict = {‘e’:’1′, ‘b’:’6′} 
Salida : g11ksforg11ks 
Explicación : todas las e se reemplazan por 1 y b por 6. 
 

Método #1: Usando join() + expresión generadora 

En esto, realizamos la tarea de hacer que los caracteres estén presentes en el diccionario y asignarlos a sus valores mediante el acceso al diccionario, todos los demás caracteres se agregan sin cambios, el resultado se vuelve a convertir al diccionario usando join().

Python3

# Python3 code to demonstrate working of
# Replace Different characters in String at Once
# using join() + generator expression
 
# initializing string
test_str = 'geeksforgeeks is best'
 
# printing original String
print("The original string is : " + str(test_str))
 
# initializing mapping dictionary
map_dict = {'e':'1', 'b':'6', 'i':'4'}
 
# generator expression to construct vals
# join to get string
res = ''.join(idx if idx not in map_dict else map_dict[idx] for idx in test_str)
 
# printing result
print("The converted string : " + str(res))
Producción

The original string is : geeksforgeeks is best
The converted string : g11ksforg11ks 4s 61st

Método #2: Usar expresiones regulares + lambda

Esta es una forma compleja de abordar el problema. En esto, construimos expresiones regulares apropiadas usando funciones lambda y realizamos la tarea requerida de reemplazo.

Python3

# Python3 code to demonstrate working of
# Replace Different characters in String at Once
# using regex + lambda
import re
 
# initializing string
test_str = 'geeksforgeeks is best'
 
# printing original String
print("The original string is : " + str(test_str))
 
# initializing mapping dictionary
map_dict = {'e':'1', 'b':'6', 'i':'4'}
 
# using lambda and regex functions to achieve task
res = re.compile("|".join(map_dict.keys())).sub(lambda ele: map_dict[re.escape(ele.group(0))], test_str)
 
# printing result
print("The converted string : " + str(res))
Producción

The original string is : geeksforgeeks is best
The converted string : g11ksforg11ks 4s 61st

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 *