我有阿拉伯语句子/单词,我想插入我的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=.*'
regexp,并以unicode表示法检索word
变量。
word
吗?
答案 0 :(得分:3)
正如您在评论中所说,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()