2011-08-29 147 views
2

this線程解決方案,我已經成功地得到了一組列出了每個看起來像:轉換Unicode字符的列表爲希伯來文字符串在python

[u'\u05ea\u05d0\u05de\u05d9\u05df \u05dc\u05d9']

我認爲那些都是Unicode字符,但對於某些原因,我不能將它們轉換回希伯來語。

我在鏈接的評論中嘗試了建議的解決方案。我也嘗試使用''.join,但它沒有奏效。我得到的錯誤是:

Error Type: exceptions.UnicodeEncodeError 22:42:15 T:2806414192
M:2425589760 ERROR: Error Contents: 'ascii' codec can't encode
characters in position 0-4: ordinal not in range(128)

我試圖在unicode()包裹的東西,但我得到的是一樣的上面的例子。

我該如何做到這一點?

注:
我試圖解析this link

編輯:
我試圖用join到列表轉換成字符串,然後打印出來。這裏是代碼的相關費用相加:

soup = BeautifulStoneSoup(link, convertEntities=BeautifulStoneSoup.XML_ENTITIES) 
    programs = soup('ul') 
    for i,prog in enumerate(programs): 
     if i==(4+getLetterValue(name)): 
      j = 0 
      while j < len(prog('li')): 
       li = prog('li')[j] 
     link = li('a')[0] 
     url = link['href'] 
       text = link.contents 
       print ''.join(text) 

link是一個字符串。和getLetterValue(name)返回一個整數,它告訴html文檔中的位置是什麼。

+1

你的意思是「將它們轉換回希伯來語」。例如。想要將它們寫入utf-8編碼文件? – bpgergo

+1

已經*是該列表中的一個unicode字符串,因此是'u'...'。請詳細說明「將它們還原爲希伯來語」的含義。 –

+0

你可以發佈你想要做的一些代碼嗎?分配列表上方的變量並打印它給תאמיןלי它看起來像希伯萊我... –

回答

2

這是一個unicode字符串,它的在希伯來語,你甚至可以直接在Python交互式shell上打印它。例如:

>>> print u'\u05ea\u05d0\u05de\u05d9\u05df \u05dc\u05d9' 
תאמין לי 

如果你真的需要將其轉換爲某種原因字節(str對象)的原始字符串,你必須指定字節串的編碼因爲文字可以代表了許多不同的編碼。

簡短的回答:假設你想使用UTF-8的文本進行編碼,可以使用:

your_unicode_text.encode('utf-8') 

如果你要使用不同的編碼,只需更改上面的編碼名稱。

有關使用Unicode文本和常見問題的Python如何處理,請參考:http://docs.python.org/howto/unicode.html

this answer見Unicode和字符串編碼的另一個簡短的說明。