Как экранировать тексты для форматирования в PythonPython

Программы на Python
Ответить
Anonymous
 Как экранировать тексты для форматирования в Python

Сообщение Anonymous »

У меня есть следующий текст.

Код: Выделить всё

"\*hello* * . [ }"
Его нужно экранировать следующим образом:

Код: Выделить всё

"\*hello\\* \* \\. \\[ \\}"
Как это сделать с помощью регулярного выражения Python?
Каждый специальный символ (специальные символы: _, * , [, ], (, ), ~, `, >, #, + , -, =, |, {, , ., ! должны быть экранированы предыдущим символом \.
Я попробовал это с этим, но тогда каждый символ экранирован:

Код: Выделить всё

escape_chars = r'_*[]()~`>#+-=|{}.!'
return re.sub(f'([{re.escape(escape_chars)}])', r'\\\1', text)
Тогда текст неформатируется следующим образом:

Код: Выделить всё

\*hello\* \* \. \[ \}
А должно быть так:

Код: Выделить всё

**hello** \* \. \[ \}
Некоторые примеры:
В \* \* \* следует экранировать только средний символ. В \{ \{ \} экранировать следует только средний
Мне это нужно для форматирования текста:
https://core.telegram.org/bots/api#markdownv2-style

Подробнее здесь: https://stackoverflow.com/questions/686 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»