2017-06-17 45 views
1

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

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

会导致打印阿拉伯语迹象,而这不会:

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

我能为了避免这个问题呢,因为我想它由Unicode的符号序列只要?

+0

最后一行在Python 3中适用于我。您应该在行的最右侧部分搜索字符,因为阿拉伯语是从右向左书写的。 – ForceBru

+0

天哪,你是对的。谢谢!第一个问题的任何建议? – hmw1001

+0

欢迎来到StackOverflow!我建议将问题分为两部分:这一部分(处理打印/存储阿拉伯文unicode字符),然后将第一部分翻译为阿拉伯文(拉丁文字母的音译)并将其作为新问题发布。 –

回答

0

你试过encode/decode函数吗?例如你可以写

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

并稍后将其打印到控制台?有没有办法倒退呢? – hmw1001

+0

我在@ hmw1001上面完成了我的回答 –

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)] 

现在,所有你需要做的,就是找到这两个列表之间的关系,奥尔也许扩展更多的范围(我说阿拉伯语,我知道有很多形式是什么一个字符和一个字符可以从一个字改变为另一个字)。

相关问题