如何使用python将阿拉伯字符映射到英文字符串

时间:2015-05-25 17:56:23

标签: python unicode arabic

我正在尝试读取一个包含阿拉伯字符的文件,例如'ع',并将其映射到英文字符串“AYN”。我想在Python 3.4中创建所有28个阿拉伯字母到英文字符串的映射。我仍然是Python的初学者,并没有太多线索如何开始。具有阿拉伯字符的文件以UTF8格式编码。

3 个答案:

答案 0 :(得分:3)

使用unicodedata;

(注意:这是Python 3.在Python 2中使用u'ع'代替)

In [1]: import unicodedata

In [2]: unicodedata.name('a')
Out[2]: 'LATIN SMALL LETTER A'

In [6]: unicodedata.name('ع')
Out[6]: 'ARABIC LETTER AIN'

In [7]: unicodedata.name('ع').split()[-1]
Out[7]: 'AIN'

最后一行适用于简单字母,但不适用于所有阿拉伯符号。例如。 ڥ是阿拉伯语字母FEH,下面有三个点。

所以你可以使用;

In [26]: unicodedata.name('ڥ').lower().split()[2]
Out[26]: 'feh'

In [28]: unicodedata.name('ڥ').lower()[14:]
Out[28]: 'feh with three dots below'

识别字符使用类似的东西(Python 3);

c = 'ع'
id = unicodedata.name(c).lower()
if 'arabic letter' in id:
    print("{}: {}".format(c, id[14:].lower()))

这会产生;

ع: ain

我正在过滤字符串'arabic letter',因为arabic unicode block还有很多其他符号。

完整的字典可以用:

arabicdict = {}
for n in range(0x600, 0x700):
    c = chr(n)
    try:
        id =  unicodedata.name(c).lower()
        if 'arabic letter' in id:
            arabicdict[c] = id[14:]
    except ValueError:
        pass

答案 1 :(得分:1)

请参阅每个字符的Unicode numbers,然后在此处构建字典:

arabic = {'alif': u'\u0623', 'baa': u'\u0628', ...} # use unicode mappings like so

答案 2 :(得分:1)

在python中使用一个简单的字典来正确执行此操作。确保您的文件按以下方式设置:

#!/usr/bin/python
# -*- coding: utf-8 -*-

以下代码应该对你有用(我在例子中添加了如何从字典中获取值,因为你是初学者):

exampledict = {unicode(('ا').decode('utf-8')):'ALIF',unicode(('ع').decode('utf-8')):'AYN'}
keys = exampledict.keys()
values = exampledict.values()
print(keys)
print(values)
exit()

输出:

[u'\u0639', u'\u0627']
['AYN', 'ALIF']

希望这可以帮助你学习python的旅程,很有趣!