Помогите заменить не-ASCII символ в Python - PullRequest
0 голосов
/ 27 мая 2010

У меня есть куча 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? Большое спасибо!

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

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

0 голосов
/ 27 мая 2010
filtered_content = filter(lambda x: x in string.printable, content)

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

0 голосов
/ 27 мая 2010
s.replace('Â ', '&nbsp;');

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

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

РЕДАКТИРОВАТЬ: Если вы не ограничены использованием только httplib2, возможно, вы можете попробовать использовать модули urllib, urllib2 или httplib, которые являются частью стандартной библиотеки Python 2.6?

...