Searching and Replacing
July 13, 2002
The string replace method #
Describe string.replace here..
Using regular expression substitutions #
Describe re.sub here. Move stuff from this page.
Mapping strings through translation tables #
Describe string.translate here.
Replacing multiple strings #
Replace multiple string pairs in one go (File: MultiReplace.py)
import re, string class MultiReplace: def __init__(self, repl_dict): # "compile" replacement dictionary # assume char to char mapping charmap = map(chr, range(256)) for k, v in repl_dict.items(): if len(k) != 1 or len(v) != 1: self.charmap = None break charmap[ord(k)] = v else: self.charmap = string.join(charmap, "") return # string to string mapping; use a regular expression keys = repl_dict.keys() keys.sort() # lexical order keys.reverse() # use longest match first pattern = string.join(map(re.escape, keys), "|") self.pattern = re.compile(pattern) self.dict = repl_dict def replace(self, str): # apply replacement dictionary to string if self.charmap: return string.translate(str, self.charmap) def repl(match, get=self.dict.get): item = match.group(0) return get(item, item) return self.pattern.sub(repl, str) r = MultiReplace({"spam": "eggs", "eggs": "spam"}) print r.replace("spam&eggs") # prints "eggs&spam" r = MultiReplace({"a": "b", "b": "a"}) print r.replace("keaba") # "kebab" r = MultiReplace({". ": "\n", "!": "exclamation", "?": "question"}) print repr(r.replace("look. an albatross !")) # 'look\nan albatross exclamation'