Сигнатура вызова re.sub
:
re.sub(pattern, repl, string, count=0)
То есть
re.sub(ur"[^-' ().,\w]+", '' , u'Castañeda', re.UNICODE)
устанавливает count
в re.UNICODE
, значение которого равно 32.
Попробуйте вместо этого:
In [57]: re.sub(ur"(?u)[^-' ().,\w]+", '', u'Castañeda')
Out[57]: u'Casta\xf1eda'
Размещение (?u)
в начале регулярного выражения - это альтернативный способ указать флаг re.UNICODE
в самом регулярном выражении.Вы также можете установить другие флаги
(?iLmsux)
таким образом.(Для получения дополнительной информации нажмите эту ссылку и выполните поиск "(? ILmsux)".)
Аналогично, подпись вызова re.split
:
re.split(pattern, string, maxsplit=0)
Решение такое же.