其他分享
首页 > 其他分享> > 如何将阿拉伯语脚本正确插入Tkinter文本小部件?

如何将阿拉伯语脚本正确插入Tkinter文本小部件?

作者:互联网

我有阿拉伯文的句子/单词,我想插入到Tkinter文本小部件中.
但是,当我插入文本时,会看到以下结果:

这是我要插入的字符串:’تاريخه’,’تارِيخ’第一个正确插入,第二个由findall()提取,插入时出现乱码.

基本上,我所有的代码(用于屏幕快照中的粗体文本)都相当简单:

word = re.findall(u'word=.*', TEXT, re.UNICODE)[0] # searching for Arabic word and taking [0]
header = " ".join([QUERY, word]) # creating a varible to insert
text.insert('1.0', "".join([header,'\n'])) # inserting Arabic text

看起来re.findall()函数查找TEXT中所有出现的’word =.*’正则表达式,并以Unicode表示法检索word变量.

我在这里感到困惑.
我可以在插入文本小部件之前以某种方式转换单词吗?

解决方法:

当您在评论中回答时,TEXT已被转义.更改生成TEXT的函数以正确返回字符串.

如果您无法控制生成文本的功能,请使用str.decodeunicode_escape编码对文本进行转义.

>>> TEXT = u'word=\\u0631\\u064e\\u062c\\u0627'
>>> print TEXT
word=\u0631\u064e\u062c\u0627
>>> TEXT = TEXT.decode('unicode-escape')
>>> print TEXT
word=رَجا

# coding: utf-8

from Tkinter import *

root = Tk()
text = Text(root)
text.pack()

QUERY = u'\u0627\u0631\u062c\u0648'
TEXT = u'word=\\u0631\\u064e\\u062c\\u0627'  # escaped!!
TEXT = TEXT.decode('unicode-escape')
word = re.findall(u'word=.*', TEXT, re.UNICODE)[0]
header = " ".join([QUERY, word])
text.insert('1.0', "".join([header,'\n']))

root.mainloop()

标签:python-2-x,tkinter,arabic,python
来源: https://codeday.me/bug/20191122/2058463.html