Python中多字符的逐一替换:string.translate()

有的时候,我们需要对多个字符进行逐一替换,一个应用场景就是去掉文章中所有的换行。

而用正则神马的有点大才小用,而一个一个replace也很麻烦,translate提供了这样的功能。

>>> str = " a\tb\rc\n "
>>> print str
ca	b

#创建翻译(替换)表,并替换,搞定
>>> import string
>>> tb = string.maketrans("\r\n\t ", "    ")
>>> str.translate(tb)
' a b c  '

补充:对于Unicode进行translate,不能用maketrans,否则会报错:
TypeError: character mapping must return integer, None or unicode
再次鄙视Python2的混乱字符编码。

#对于unicode,请手动构造translate表
tb = dict([ (ord(ch), u' ') for ch in u"\n\r\t "])

Leave a Reply

Your email address will not be published.