Unicode re.sub () не работает с \ g <0> (группа 0)

Почему \g<0> работает с регулярным выражением unicode?

Когда я пытался использовать \g<0> для вставки пробела до и после группы с обычным регулярным выражением, он работает:

 >>> punct = """,.:;!@#$%^&*(){}{}|\/?><"'""" >>> rx = re.compile('[%s]' % re.escape(punct)) >>> text = '''"anständig"''' >>> rx.sub(r" \g<0> ",text) ' " anst\xc3\xa4ndig " ' >>> print rx.sub(r" \g<0> ",text) " anständig " 

но с регулярным выражением unicode, пространство не добавляется:

 >>> punct = u""",–−—''‚”“‟„!£"%$'&)(+*-€/.±°´·¸;:=<?>@§#¡•[˚]»_^`≤…\«¿¨{}|""" >>> rx = re.compile("["+"".join(punct)+"]", re.UNICODE) >>> text = """„anständig“""" >>> rx.sub(ur" \g<0> ", text) '\xe2\x80\x9eanst\xc3\xa4ndig\xe2\x80\x9c' >>> print rx.sub(ur" \g<0> ", text) „anständig“ 
  1. Как я могу заставить \g работать в регулярном выражении unicode?
  2. Если (1) невозможно, как мне получить регулярное выражение unicode, введите пробел до и после символа в punct ?

One Solution collect form web for “Unicode re.sub () не работает с \ g <0> (группа 0)”

Я думаю, у вас две ошибки. Во-первых, вы не re.escape как в первом примере с re.escape и у вас есть такие символы, как [] которые должны быть экранированы. Во-вторых, text переменная не является unicode. Пример, который работает:

 >>> punct = re.escape(u""",–−—''‚”“‟„!£"%$'&)(+*-€/.±°´·¸;:=<?>@§#¡•[˚]»_^`≤…\«¿¨{}|""") >>> rx = re.compile("["+"".join(punct)+"]", re.UNICODE) >>> text = u"""„anständig“""" >>> print rx.sub(ur" \g<0> ", text) „ anständig “ 
  • Функция print () Python 3 с символами фарси / арабский
  • Unicode в PowerShell с Python? Альтернативные оболочки в Windows?
  • Ошибка кодирования Unicode Beautiful Soup
  • Scrapy xpath utf-8 литералы
  • Получить «фактическую» длину строки в символах Юникода
  • Печать строки unicode в python независимо от среды
  • Python Unicode, имеет номер юникода в обычной строке, хочет печатать unicode
  • Ошибка MySQL «неправильное строковое значение» при сохранении строки unicode в Django
  • Python - лучший язык программирования в мире.