Справка Замена символа не ASCII в Python

У меня есть куча файлов HTML, которые я загрузил с помощью пакета HTTPLIB2 в Python. ' ' отображаются как "Â".

<font color="#ff0000">02/12/2004Â </font> is showing while <font color="#ff0000">02/12/2004&nbsp;</font> is the desired format.

Как заменить 'Â ' на '&nbsp;' в Python? Большое спасибо!

Ответ 1

У вас проблема с кодировкой. Вместо того, чтобы пытаться удалить эти символы, найдите кодировку страницы, затем, прочитав файл, используйте codecs module вместо open(), используя правильную кодировку символов.

Ответ 2

filtered_content = filter(lambda x: x in string.printable, content)

Это решило мою проблему. Спасибо!

Ответ 3

s.replace('Â ', '&nbsp;');

Однако, хотя я не использовал HTTPLIB2, я уверен, что что-то не так, если источник файлов HTML изменяется при его загрузке. Возможно, проблема с декодированием продолжается. Какую версию Python вы используете? Если это Python 3, содержимое будет байтовыми последовательностями, а не строками, поэтому вам нужно будет указать правильную кодовую страницу для декодирования байтов.

http://code.google.com/p/httplib2/wiki/ExamplesPython3

EDIT: Если вы не ограничены использованием только httplib2, возможно, вы можете попробовать изучить модули urllib, urllib2 или httplib, которые являются частью стандартной библиотеки Python 2.6?