Как удалить () используя модуль re в Python - PullRequest
0 голосов
/ 15 мая 2011

У меня проблемы с обработкой XML-текста.Я хочу удалить () из моего текста следующим образом:

из <b>(apa-bhari(n))</b> в <b>apa-bhari(n)</b>

Следующий код был сделан

name= re.sub('<b>\((.+)\)</b>','<b>\1</b>',name)

Но это может тольковозвращает

<b></b>

Я не понимаю escape-последовательности и обратную ссылку.Пожалуйста, сообщите мне решение.

Ответы [ 3 ]

2 голосов
/ 15 мая 2011

Вам необходимо использовать необработанные строки или экранировать косую черту:

name = re.sub(r'<b>\((.+)\)</b>', r'<b>\1</b>', name)
1 голос
/ 15 мая 2011

Попробуйте:

name= re.sub('<b>\((.+)\)</b>','<b>\\1</b>',name)

или если вы не хотите иметь неразборчивый код с \\ везде, где вы используете обратную косую черту, не избегайте обратной косой черты вручную, но добавьте r перед строкой, например: r"myString\" совпадает с "myString\\".

1 голос
/ 15 мая 2011

Вам нужно экранировать обратную косую черту в строках Python, если за ними следует число; все следующие выражения верны:

assert '\1' == '\x01'
assert len('\\1') == 2
assert '\)' == '\\)'

Итак, ваш код будет

name = re.sub('<b>\\((.+)\\)</b>','<b>\\1</b>',name)

В качестве альтернативы используйте определение строки регулярного выражения:

name = re.sub(r'<b>\((.+)\)</b>', r'<b>\1</b>',name)
...