2017-06-02 105 views
1

讀我有一個具有寫在Unicode的像一些名稱的文本文件:顯示的unicode從文件

\u0938\u0941\u0932\u0915\u094d\u0937\u0923\u093e \u0926\u0947\u0935\u0940

我已成功地編寫代碼作爲字符串讀這英寸我想要做的就是把它作爲Tkinter的標籤。現在通常我知道Tkinter標籤文本可以採用unicode,因爲當我用這個值直接編碼標籤時,它描述了寫入字符。但是當我從文件中讀取數據並將其存儲在數組中時,它只會顯示字符串值。 我的問題是如何將這個unicode的字符串表示轉換回unicode。我正在使用這樣的代碼。 roster_hindi包含字符。

name_label=unicode(roster_hindi[0], 'iso8859-6') 
print name_label 
L=Label(t2, text=name_label, font=("KrutiDev", 18), background='gold')  
L.grid(row=0, column=0, sticky='ns') 

這不起作用。任何幫助將深表謝意。 謝謝。

回答

1

文本文件中的數據採用Unicode轉義序列的形式。以下是如何將其轉換在Python 2

data = '\u0938\u0941\u0932\u0915\u094d\u0937\u0923\u093e \u0926\u0947\u0935\u0940' 
s = data.decode('unicode-escape') 
print s 

輸出

सलकषणा दवी 

要真正從文件中讀取數據時,你可以做這樣的事情:

with open(fname, 'r') as f: 
    data = f.read() 
s = data.decode('unicode-escape') 
print s 

FWIW,這裏是如何在Python 3中做到的,這對於字節vs文本字符串更爲嚴格。最徹底的方法(恕我直言)做,這是二進制模式讀取Unicode轉義序列:

with open(fname, 'rb') as f: 
    data = f.read() 
s = data.decode('unicode-escape') 
print(s) 

這段代碼也將正確地在Python 2

+0

這工作就像一個魅力的工作!真的很感謝幫助 – OldIndianProgrammer