2012-01-06 13 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。

相關問題