我有阿拉伯文的句子/单词,我想插入到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.decode
和unicode_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()