python - 显示从文件中读取的 unicode

标签 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')

这行不通。任何帮助将不胜感激。 谢谢。

最佳答案

文本文件中的数据采用 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/

相关文章:

R包cmd检查-无法识别非ascii字符

mysql - 将 4 字节 unicode 字符插入 MySQL/MariaDB

python Tkinter 捕获键盘事件保存为一个字符串

python - 结合两个机器学习模型的结果

python - 将文本拆分成句子

HTML 对空白字符的处理取决于上下文——但规则是什么?

python - 如何在主循环期间更改 Tkinter 应用程序的默认字体?

python - 在 tkinter 中获取光标的绝对位置

python - 如何在Python中读取和打印Excel文件中的随机行?

python - 属性错误 : 'set' object has no attribute 'items'