2017-06-02 104 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