如何使用 python 将阿拉伯字符映射到英文字符串
How to map a arabic character to english string using python
我正在尝试读取一个包含阿拉伯字符(如“ù”)的文件并将其映射到英文字符串 "AYN"。我想在 Python 3.4 中创建所有 28 个阿拉伯字母到英文字符串的映射。我仍然是 Python 的初学者,不知道如何开始。具有阿拉伯字符的文件以 UTF8 格式编码。
每个字符参考Unicodenumbers然后构造字典如下:
arabic = {'alif': u'\u0623', 'baa': u'\u0628', ...} # use unicode mappings like so
使用 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,很有趣!
使用unicodedata
;
(注意:这是Python3.在Python2中使用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
我正在尝试读取一个包含阿拉伯字符(如“ù”)的文件并将其映射到英文字符串 "AYN"。我想在 Python 3.4 中创建所有 28 个阿拉伯字母到英文字符串的映射。我仍然是 Python 的初学者,不知道如何开始。具有阿拉伯字符的文件以 UTF8 格式编码。
每个字符参考Unicodenumbers然后构造字典如下:
arabic = {'alif': u'\u0623', 'baa': u'\u0628', ...} # use unicode mappings like so
使用 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,很有趣!
使用unicodedata
;
(注意:这是Python3.在Python2中使用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