2012-01-06 62 views
0

我尝试在Python拆分这种线:如何在Python中分割多语言行并获取Unicode十六进制值?

aiburenshi 爱不忍释 "לא מסוגל להינתק, לא יכול להיפרד מדבר מרוב חיבתו אליו"

此行包含希伯来文,简体中国和英语。

如果我有例如一个元组T,我想获得的元组是T =(希伯来文字符串,英文字符串,中国字符串)。

的问题是,我不知道如何让希伯来字母的中国的Unicode值。这两行不工作:

print ((unicode("释","utf-8")).encode("utf-8")) 
print ((unicode("א","utf-8")).encode("utf-8")) 

而且我得到这个错误:

SyntaxError: Non-ASCII character '\xe9' in file split_or.py on line 9, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

+1

这可能是值得说明您正在使用(x或3 x)的Python的版本无论是在问题中,标签或两者兼而有之。 – 2012-01-06 09:44:01

+1

你有没有在你的文件的开头声明任何编码,如#coding:UTF-8? – 2012-01-06 10:46:26

+0

你的国家的问题是一个非常明确的埃罗,即使包含的链接,告诉你如何解决这个问题的文本。你为什么不读链接?因此,这是[在Python源代码中使用utf-8编码]的副本(http://stackoverflow.com/questions/6289474/working-with-utf-8-encoding-in-python-source) – 2013-05-04 16:25:52

回答

2

在Python 2,你需要打开文件中指定一个这样的编码:

import codecs 
f = codecs.open("myfile.txt","r",encoding="utf-8") 

在Python 3,你可以编码选项添加到任何open()调用。

这将保证文件被正确解码。请注意,这并不意味着您的打印通话将正常工作,这取决于许多因素(例如见http://www.pycs.net/users/0000323/stories/14.html,这只是一个开始);最好使用适当的调试器,或输出到文件(这将再次用codecs.open()打开)。

获得实际的代码点(即整“值”),你可以使用内置的ORD():

>>> ord(u"£") 
163 

,如果你知道不同的语言范围,这就是你所需要的。范围见this pagethis page

否则,您可能需要使用unicodedata查找东西,比如双向类别:

>>> unicodedata.bidirectional(u"£") 
ET # 'E'uropean 'T'erminator 
2

在Python 2,Unicode字符串常量需要用 “U” 字开头来,如:

print ((unicode(u"释","utf-8")).encode("utf-8")) 
print ((unicode(u"א","utf-8")).encode("utf-8")) 

在Python 3中,字符串常量默认是Unicode。