如何使用python将阿拉伯语字符映射为英语字符串

如何使用python将阿拉伯语字符映射为英语字符串,python,unicode,arabic,Python,Unicode,Arabic,我正在尝试读取一个包含“ع”等阿拉伯语字符的文件,并将其映射到英语字符串“AYN”。我想在Python3.4中创建一个将所有28个阿拉伯字母映射到英语字符串的映射。我仍然是Python的初学者,不知道如何开始。具有阿拉伯字符的文件以UTF8格式编码 请参考每个字符的Unicode,然后按如下方式构建字典: arabic = {'alif': u'\u0623', 'baa': u'\u0628', ...} # use unicode mappings like so 请参考每个字符的Unic

我正在尝试读取一个包含“ع”等阿拉伯语字符的文件,并将其映射到英语字符串“AYN”。我想在Python3.4中创建一个将所有28个阿拉伯字母映射到英语字符串的映射。我仍然是Python的初学者,不知道如何开始。具有阿拉伯字符的文件以UTF8格式编码

请参考每个字符的Unicode,然后按如下方式构建字典:

arabic = {'alif': u'\u0623', 'baa': u'\u0628', ...} # use unicode mappings like so
请参考每个字符的Unicode,然后按如下方式构建字典:

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

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

#!/usr/bin/python
# -*- coding: utf-8 -*-
以下是适合您的代码(由于您是初学者,我在示例中还添加了如何从字典中提取值):

输出:

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

希望这能帮助你在学习python的旅途中,很有趣

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

#!/usr/bin/python
# -*- coding: utf-8 -*-
以下是适合您的代码(由于您是初学者,我在示例中还添加了如何从字典中提取值):

输出:

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

希望这能帮助你在学习python的旅途中,很有趣

使用
unicodedata

(注意:这是Python3。在Python2中使用
u'ع'

最后一行可以处理简单的字母,但不能处理所有的阿拉伯符号。例如,ڥ是阿拉伯文字母FEH,下面有三个点

所以你可以使用

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

要识别字符,请使用类似这样的内容(Python 3)

这将产生

ع: ain
我正在筛选字符串“阿拉伯文字母”,因为还有很多其他符号

一本完整的词典可以由以下内容组成:

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

使用Unicode数据

(注意:这是Python3。在Python2中使用
u'ع'

最后一行可以处理简单的字母,但不能处理所有的阿拉伯符号。例如,ڥ是阿拉伯文字母FEH,下面有三个点

所以你可以使用

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

要识别字符,请使用类似这样的内容(Python 3)

这将产生

ع: ain
我正在筛选字符串“阿拉伯文字母”,因为还有很多其他符号

一本完整的词典可以由以下内容组成:

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

词典搜索它。这是pythonDictionary中的哈希表。搜索它。这是pythonNo中的哈希表,不需要查找名称。他们是标准图书馆的一部分!不用查名字。他们是标准图书馆的一部分!当我在windows DOS提示符下运行您的第一个示例时,我得到了以下错误,回溯(最近一次调用最后一次):文件“arabic.py”,第5行,打印(“{}:{}”。format(c,id[14::][.lower()))文件“c:\Python34\lib\encodings\cp437.py”,第19行,在encode return codec.charmap\u encode(input,self.errors,encoding\u map)[0]UnicodeEncodeError:“charmap”编解码器无法对位置0中的字符“\u0639”进行编码:字符映射到@Naseem,这是一个编码问题。我的终端使用UTF-8,但
cmd.exe
(“DOS提示符”)不使用。在启动Python之前,在DOS提示符下运行命令
chcp 65001
,它可能会工作。否则,请尝试在Python附带的
idle
GUI中运行它,或者更好,使用IPython。非常感谢。运行chcp 65001对我来说很有效。现在代码工作了。但打印输出为“Øimk_:ain”。有没有办法在DOS windows上打印阿拉伯字母?@Naseem您需要更改
cmd.exe
的设置才能使用unicode字体。例如,当我在windows DOS提示符下运行您的第一个示例时,我得到以下错误,回溯(最近一次调用最后一次):文件“arabic.py”,第5行,正在打印(“{}:{}”).format(c,id[14:][.lower())文件“c:\Python34\lib\encodings\cp437.py”,第19行,在encode return codeces.charmap\u encode(input,self.errors,encoding\u map)[0]UnicodeEncodeError:“charmap”编解码器无法对位置0中的字符“\u0639”进行编码:字符映射到@Naseem,这是一个编码问题。我的终端使用UTF-8,但
cmd.exe
(“DOS提示符”)不使用。在启动Python之前,在DOS提示符下运行命令
chcp 65001
,它可能会工作。否则,请尝试在Python附带的
idle
GUI中运行它,或者更好,使用IPython。非常感谢。运行chcp 65001对我来说很有效。现在代码工作了。但打印输出为“Øimk_:ain”。有没有办法在DOS windows上打印阿拉伯字母?@Naseem您需要更改
cmd.exe
的设置才能使用unicode字体。请参阅,例如,当我运行此示例时,我得到错误“Name error Name”“unicode”“not defined”。我已经按照您的建议添加了标题行。添加行“导入编解码器”,如果不起作用,请尝试使用u而不是unicode,这可能是因为python 3和2之间存在问题,上面的示例适用于python 2.7当我运行此示例时,出现错误“Name error Name”“unicode”“not defined”。我已经按照您的建议添加了标题行。添加“导入编解码器”行,如果不起作用,请尝试使用u而不是unicode,这可能是因为python 3和2之间存在问题,上面的示例适用于python 2.7