如何查看爬行的unicode阿拉伯字符串?

时间:2011-04-28 06:06:08

标签: python unicode web-crawler

我使用Python抓取了一些网页。我扯掉了html标签,只将这些页面的一些内容存储为repr(s)。这些页面中的大部分都不是英文的。现在,我如何以原始语言查看已抓取的内容?

例如,抓取工具只将一行阿拉伯语文本写入txt文件: 的u '\ u0639 \ u0644 \ u0649'

但是当我在文本editer或浏览器中打开txt文件时,它看起来与上面完全一样,所以它基本上不是人类可读的......

是否有一些简单的方法来呈现和显示阿拉伯语中的字符串?

谢谢,

5 个答案:

答案 0 :(得分:1)

>>> x= u'\u0639\u0644\u0649'
>>> open('x.html','w').write(x.encode('ascii','xmlcharrefreplace'))

在浏览器中打开x.html,它应该正常显示。实际内容:

على

答案 1 :(得分:1)

你没有获得人类可读的代码,因为你已经使用了repr(s)将字符串写入文件 - 这就是repr应该生成的 - 一个程序员可读的表示,它不是完全人类可读的

如果要以任何(支持unicode)文本编辑器和浏览器可读的格式存储文本,则应将其保存为UTF-8编码:

import codecs

s = u'\u0639\u0644\u0649'
f = codecs.open('output.txt', 'w', 'utf-8')
f.write(s)
f.close()

如果没有自动检测到,请确保将浏览器或编辑器编码设置为UTF-8。

答案 2 :(得分:0)

>>> print ast.literal_eval("u'\u0639\u0644\u0649'")
على

嗯,不是浏览器中显示的顺序,而是其他。

答案 3 :(得分:0)

>>> print u'\u0639\u0644\u0649'
على

答案 4 :(得分:0)

正如其他人所说,在浏览器中查看文件并不是一个坏主意。

  • 将其存储在utf-8(如open('x.html','w').write(x.encode('utf-8')))中,因为大多数浏览器都能很好地处理utf-8。
  • 在浏览器中,您可能需要将View->字符编码更改为Utf-8。
  • 您的机器上需要阿拉伯字体,因此浏览器可以使用它们来显示字符。

编写本文后,任何能够解码utf-8并且可以访问字体的文件查看器/编辑器都可以为您完成此操作(例如,vim在我的机器上正常工作)。