次のような正規表現を使用して、文字列 (バイト文字列または Unicode 文字列) からいくつかの文字を削除したいと思います。
pattern = re.compile(ur'\u00AE|\u2122', re.UNICODE)
文字が Unicode リテラルとして指定されている場合、結果の正規表現はバイト文字列に対して適切に機能しません。
q = 'Canon\xc2\xae EOS 7D'
pattern.sub('', q) # 'Canon\xc2 EOS 7D'
ただし、置換の引数をユニコード文字列に変換すると、期待どおりに機能します...
pattern.sub('', unicode(q)) # u'Canon EOS 7D'
誰かが私になぜこれが当てはまるのか説明してもらえますか?
ありがとう、
ピーター