052:文字列の一部を置換する
ある文字列と等しい部分を置換する
文字列メソッドの replace を用います。
>>> s = u'I love Ruby!' >>> print s.replace(u'Ruby', u'Python') I love Python! >>> s = u'ルビー レシピ' >>> print s.replace(u'ルビー', u'パイソン') パイソン レシピ
正規表現にマッチした部分を置換する
re.sub メソッドを用います。
>>> import re >>> s = u'あいあいあい' >>> print re.sub(u'あい', u'愛', s) 愛愛愛
count 引数を用いると、 n 回だけの変換も可能です。
>>> print re.sub(u'あい', u'愛', s, count=1) 愛あいあい
置換文字内では \1 のような後方参照を使うことが可能です。
>>> print re.sub(u'(.)([A-Z])', ur'\1 \2', u'FrontPage') Front Page
より複雑な変換を行うため、置換文字の代わりに関数を渡すことができます。この関数はマッチオブジェクトを一つ受け取り、変換後の文字列を返すようにします。
>>> def dashrepl(matchobj):
... if matchobj.group(0) == u'-':
... return u' '
... else:
... return u'-'
...
>>> print re.sub(u'-{1,2}', dashrepl, u'pro----gram-files')
pro--gram files
特定の文字を置換する
文字列メソッドの translate を用います。
>>> t = dict((ord(k), ord(v)) for k, v in zip(u'aiueo', u'あいうえお')) >>> print u'abcdefghijklmn'.translate(t) あbcdえfghいjklmn