#python #unicode #web-crawler
#python #Юникод #веб-сканер
Вопрос:
Я обходил некоторые веб-страницы, используя Python. Я удалил html-теги и сохранил только некоторое содержимое этих страниц в виде repr (ов). Большинство этих страниц не на английском. Теперь, как я могу просмотреть обходимый контент на языке оригинала?
Например, искатель записал только одну строку некоторого арабского текста в текстовый файл: u’u0639 u0644 u0649′
Но когда я открываю текстовый файл в редакторе текста или браузере, он выглядит точно так же, как указано выше, так что он в основном не читается человеком..
Есть ли какой-нибудь простой способ отрисовки и отображения строки на арабском языке?
Спасибо,
Комментарии:
1. Как вы записали текст в файл?
Ответ №1:
>>> x= u'u0639u0644u0649'
>>> open('x.html','w').write(x.encode('ascii','xmlcharrefreplace'))
Откройте x.html
в браузере, и она должна отображаться правильно. Фактическое содержимое:
amp;#1593;amp;#1604;amp;#1609;
Ответ №2:
Вы не получаете читаемый человеком код, потому что вы использовали repr (ы) для записи строки в файл — и это то, что repr должен генерировать — удобочитаемое представление, которое не совсем доступно для чтения человеком.
Если вы хотите сохранить текст в формате, читаемом любым (поддерживающим unicode) текстовым редактором и браузером, вам следует сохранить его в кодировке UTF-8:
import codecs
s = u'u0639u0644u0649'
f = codecs.open('output.txt', 'w', 'utf-8')
f.write(s)
f.close()
Убедитесь, что вы установили в своем браузере или редакторе кодировку UTF-8, если она не определяется автоматически.
Ответ №3:
>>> print ast.literal_eval("u'u0639u0644u0649'")
على
Ну, не в том порядке, который показан в браузере, но неважно.
Комментарии:
1. Спасибо! Могу ли я в любом случае преобразовать строку обратно в HTML, чтобы я мог просматривать ее в браузере?
Ответ №4:
>>> print u'u0639u0644u0649'
على
Ответ №5:
Как предлагали другие, неплохо просмотреть файл в браузере.
- Храните ее в utf-8 (например
open('x.html','w').write(x.encode('utf-8'))
), поскольку большинство браузеров хорошо оснащены для обработки utf-8. - В браузере вам может потребоваться изменить View-> Character Encoding на Utf-8.
- На вашем компьютере понадобятся арабские шрифты, чтобы браузер мог использовать их для отображения символов.
После написания этого любой просмотрщик файлов / редактор, который способен декодировать utf-8 и имеет доступ к шрифтам, может сделать это за вас (например, vim отлично работает на моей машине).