显示从文件

时间:2017-06-02 11:39:23

标签: python unicode tkinter

我有一个文本文件,其中有一些名称用unicode编写,如:

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

我已经设法编写代码以字符串形式读取它。我想做的是把它作为Tkinter的标签。现在我知道Tkinter标签文本可以采用unicode,因为当我使用此值直接编码标签时,它描述了写字符。但是当我从一个文件中读取并将其存储在一个数组中时,它放在Tkinter上只显示字符串值。 我的问题是如何将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 个答案:

答案 0 :(得分: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中完成的,它对字节与文本字符串的关系更为严格。最干净的方法(IMHO)是以二进制模式读取Unicode转义序列:

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

此代码也可以在Python 2中正常运行。

相关问题