¿Cómo reemplazar varios caracteres en una cadena?

¿Cómo reemplazar varios caracteres en una cadena?

por favor ayuda para arreglar el script

Necesito que en la línea “nombre” los caracteres especiales hayan sido reemplazados por la frase “carácter especial”

newName = replace(name, ['\', '/', ':', '*', '?', '"', '', '|'], 'special char') 

pero me sale el mensaje:

syntax inválida

Puedes usar re.sub () :

 import re newName = re.sub('[\\\\/:*?"<>|]', 'special char', name) 

Puedes usar str.translate y un diccionario de comprensión :

 >>> name = ":1?2/3<4|5" >>> bad = ['\\', '/', ':', '*', '?', '"', '<', '>', '|'] >>> newName = name.translate({ord(c):'special char' for c in bad}) >>> newName 'special char1special char2special char3special char4special char5' >>> 

Si usa timeit.timeit , verá que este método es generalmente más rápido que los otros suministrados:

 >>> from timeit import timeit >>> name = ":1?2/3<4|5" >>> bad = ['\\', '/', ':', '*', '?', '"', '<', '>', '|'] >>> >>> timeit("import re;re.sub('[\\/:*?\"<>|]', 'special char', name)", "from __main__ import name") 11.773986358601462 >>> >>> timeit("for char in bad: name = name.replace(char, 'special char')", "from __main__ import name, bad") 9.943640323001944 >>> >>> timeit("name.translate({ord(c):'special char' for c in bad})", "from __main__ import name, bad") 9.48467780122894 >>> 

usted podría hacer algo como:

 >>> rep_chars = ['\\', '/', ':', '*', '?', '"', '<', '>', '|'] >>> name = "/:*?\"<>name" >>> for char in rep_chars: ... name = name.replace(char,'') ... >>> name 'name'