«Бавария Мюнхен» -> «Бавария Мюнхен» - PullRequest
2 голосов
/ 19 февраля 2012

Какой самый простой способ расшифровки строки такой:

 'Bayern München' -> 'Bayern München'

Я ищу что-то более легкое, возможно, замена строки будет достаточно хорошей, хотя более надежное решение сделало бы меня счастливее. Я надеялся, что методы encode и decode будут полезны, но мне пока не повезло.

Для контекста я собираю небольшое количество информации с веб-страницы, я не хочу иметь решение в тяжелом весе (я смотрел на scrapy , но, хотя это здорово, это слишком много для меня). Страница сообщает кодировку utf-8, но я не знаю, как перейти от этого к строке с умлаутом, который я могу напечатать пользователю.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Я пытался исследовать это, но ни один из других ответов о SO или за его пределами не помог мне. Например, Beautiful Soup не обрабатывает эти шестнадцатеричные коды.

Это моя первая настоящая проблема с кодировками, так что извините, если я открыл банку с червями, пожалуйста, потерпите меня.

1 Ответ

4 голосов
/ 19 февраля 2012

Похоже, это будет работать в Python 2.6 или более поздней версии:

import HTMLParser     # html.parser in Python 3
h = HTMLParser.HTMLParser()
h.unescape('Bayern M&#xFC;nchen')

Технически это "внутренний" и недокументированный, но он был в API довольно давно и не отмечен лидирующим подчеркиванием,

Нашел здесь ;упоминаются и другие подходы, из которых BeautifulSoup, вероятно, лучший, если не обращать внимания на его «тяжесть».

...