python将unicode写入文件并将其作为符号

时间:2017-06-17 10:29:08

标签: python string unicode

我正在开发一个包含阿拉伯语 - 英语数据库的Python程序,它允许更新这个数据库,也可以学习词汇表。我几乎完成了实现我需要的所有功能,但最重要的部分是缺失的:阿拉伯字符串的编码。要将新词汇表附加到数据库txt文件,将创建一个词典,然后将其内容附加到该文件。为了研究词汇,将txt文件的内容再次转换为字典,将随机字打印到控制台并要求用户进行翻译。现在的想法是用户可以用拉丁字母书写Englisch单词和阿拉伯单词,程序将在内部将伪阿拉伯字符串转换为阿拉伯字母。例如,如果用户在被要求输入阿拉伯语时写'b',我想追加'ب'。 在实施过程中,我必须考虑大约80个标志。有没有办法在拉丁字母输入字符串和相应的阿拉伯标志之间创建一些映射?对我来说,最直观的想法是在另一个之后写一个if语句,但这可能超级慢。 2.我无法将阿拉伯字符串打印到控制台。这个输入

print('bla{}!'.format(chr(0xfe9e)))
print('bla{}!'.format(chr(int('0x'+'0627',16))))

将导致打印阿拉伯语符号,而这不会:

print('{}'.format(chr(0xfe9e)))

我可以做些什么来避免这个问题,因为我想要一个仅包含unicode符号的序列?

2 个答案:

答案 0 :(得分:0)

您是否尝试过encode/decode功能?例如,你可以写

u = ("سلام".encode('utf-8'))
print(u.decode('utf-8'))

答案 1 :(得分:0)

这不是最终答案,但可以给你一个开始。

首先检查你的编码:

import sys
sys.getdefaultencoding()

修改:

sys.setdefaultencoding('UTF8')已从sys模块中删除。但是,您仍然可以评论框中sys.getdefaultencoding()返回的内容。

但是,对于阿拉伯字符,您可以一次性对它们进行整理:

根据此website,阿拉伯字符来自0x620 to 0x64B,基本拉丁字符来自0x0061 to 0x007B(针对小写字母)。

所以:

arabic_chr = [chr(k) for k in range(0x620, 0x064B, 1)]
latin_chr = [chr(k) for k in range(0x0061, 0x007B, 1)]

现在,你要做的就是找到两个列表之间的关系,或者可以扩展更多的范围(我说阿拉伯语,我知道有一个字符的形式有很多,一个字符可以改变一个字到另一个)。