我有一个文本文件,其中有一些用 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')
这行不通。任何帮助将不胜感激。 谢谢。
最佳答案
文本文件中的数据采用 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 中执行此操作的方法,Python 3 对字节与文本字符串更加严格。最简洁的方法(恕我直言)是以二进制模式读取 Unicode 转义序列:
with open(fname, 'rb') as f:
data = f.read()
s = data.decode('unicode-escape')
print(s)
此代码在 Python 2 中也能正常工作。
关于python - 显示从文件中读取的 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44328029/