#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)