Как преобразовать «необработанную» строку в «декодированную» строку в Python?

#python #string #type-conversion #rawstring

#питон #строка #преобразование типов #rawstring

Вопрос:

У меня есть следующая строка:

 raw_text  = r"The Walt Disney Company, (2006u2013present)"    
print(raw_text)
#result : The Walt Disney Company, (2006u2013present)
 

Мои вопросы в том, как я могу получить декодированную строку «decoded_text» из raw_text, чтобы я мог получить

 print(decoded_text)
#result : The Walt Disney Company, (2006-present)
 

кроме этого тривиального способа:

 decoded_text = raw_text.replace("u2013", "-")
 

На самом деле, у меня есть большие строки, которые содержат много u— материала (например, u2013, u00c9 и так далее). Поэтому я ищу способ преобразовать их все сразу в правильное русло.

Комментарии:

1. Если ваш ввод на самом деле исходит из необработанного строкового литерала Python, r префикса и всего остального, тогда просто r отключите. Если ваш ввод не исходит из строкового литерала Python raw, то запрашиваемая вами операция, вероятно, немного неверна. Откуда берется этот ввод?

2. Я получил строку из Интернета через BeautifulSoup. Строка содержит в себе много такого материала.

3. Правила экранирования варьируются от контекста к контексту, и то, что анализирует экранирование строкового литерала Python, будет делать неправильные вещи, скажем, для экранирования строки JSON.

Ответ №1:

Вы можете использовать встроенный модуль codecs для этой задачи следующим образом

 import codecs
raw_text  = r"The Walt Disney Company, (2006u2013present)"
print(codecs.unicode_escape_decode(raw_text)[0])
 

вывод:

 The Walt Disney Company, (2006–present)