how to replace multiple characters in a string? how to replace multiple characters in a string? python-3.x python-3.x

how to replace multiple characters in a string?


You can use re.sub():

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


You can use str.translate and a dictionary comprehension:

>>> 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'>>>

If you use timeit.timeit, you will see that this method is generally faster than the others supplied:

>>> 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>>>


you could do something like:

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