Я хотел бы удалить некоторые символы из строки (байтовой строки или строки Юникода), используя регулярное выражение, подобное этому:
pattern = re.compile(ur'\u00AE|\u2122', re.UNICODE)
Если символы указаны как литералы Юникода, результирующее регулярное выражение не работает должным образом в байтовой строке.
q = 'Canon\xc2\xae EOS 7D'
pattern.sub('', q) # 'Canon\xc2 EOS 7D'
Если я преобразую аргумент подстановки в строку в юникоде, он будет работать, как и ожидалось ...
pattern.sub('', unicode(q)) # u'Canon EOS 7D'
Может кто-нибудь объяснить мне, почему это так?
спасибо,
Peter