Как просмотреть обходимую однокодированную арабскую строку?

#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 отлично работает на моей машине).