Python中使用split()函数后的阿拉伯语单词表示

Python中使用split()函数后的阿拉伯语单词表示,python,python-2.7,python-3.x,arabic,Python,Python 2.7,Python 3.x,Arabic,在Python中使用split()函数后,我在表示阿拉伯语单词时遇到问题。我使用阿拉伯语文本作为输入文件(您可以尝试任何阿拉伯语源代码) 这是我的原始代码,我是从中派生出来的 我需要的输出与我使用英文输入文件的输出相同,如下所示: {('He', 'is'): ['happy.', 'happy.', 'going.', 'sleep.', 'sad.',

在Python中使用split()函数后,我在表示阿拉伯语单词时遇到问题。我使用阿拉伯语文本作为输入文件(您可以尝试任何阿拉伯语源代码)

这是我的原始代码,我是从中派生出来的

我需要的输出与我使用英文输入文件的输出相同,如下所示:

{('He', 'is'): ['happy.',
                'happy.',
                'going.',
                'sleep.',
                'sad.',
                'happy.',
                'happy.',
                'sleep.',
                'angry.',
                'angry.'],
 ('angry.', 'He'): ['is', 'is'],
 ('going.', 'He'): ['is'],
 ('happy.', 'He'): ['is', 'is', 'is', 'is'],
 ('is', 'angry.'): ['He', 'He'],
 ('is', 'going.'): ['He'],
 ('is', 'happy.'): ['He', 'He', 'He', 'He'],
 ('is', 'sad.'): ['He'],
 ('is', 'sleep.'): ['He', 'He'],
 ('sad.', 'He'): ['is'],
 ('sleep.', 'He'): ['is', 'is'],
 ('He', 'is'): ['angry.']}
但这些文字看起来像是无法阅读的文字:

    {('\xd8\xa3\xd9\x86\xd8\xa7', '\xd8\xa8\xd8\xb5\xd8\xaf\xd8\xaf'):['\xd8\xaa\xd8\xac\xd8\xb1\xd8\xa8\xd8\xa9'],('\xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd8\xac','\xd9\x81\xd9\x8a'): ['\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86.'('\xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa8\xd9\x8a', '\xd8\xb3\xd8\xaa\xd9\x83\xd9\x88\xd9\x86'): ['\xd9\x85\xd8\xae\xd8\xaa\xd9\x84\xd9\x81\xd8\xa9.'],('\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86','\xd8\xb1\xd8\xa7\xd8\xa6\xd8\xb9'): ['\xd9\x88\xd8\xac\xd9\x85\xd9\x8a\xd9\x84,','\xd9\x88\xd9\x8a\xd8\xb3\xd8\xaa\xd8\xad\xd9\x82'],('\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86','\xd9\x85\xd8\xb9'): ['\xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa8\xd9\x8a'('\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86.', '\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86'): ['\xd8\xb1\xd8\xa7\xd8\xa6\xd8\xb9'],('\xd8\xa8\xd8\xb5\xd8\xaf\xd8\xaf', '\xd8\xaa\xd8\xac\xd8\xb1\xd8\xa8\xd8\xa9'): ['\xd9\x87\xd8\xb0\xd8\xa7'],('\xd8\xaa\xd8\xac\xd8\xb1\xd8\xa8\xd8\xa9', '\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86'): ['\xd9\x85\xd8\xb9'],('\xd8\xaa\xd8\xac\xd8\xb1\xd8\xa8\xd8\xa9', '\xd9\x87\xd8\xb0\xd8\xa7'): ['\xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd8\xac'],('\xd8\xb1\xd8\xa7\xd8\xa6\xd8\xb9', '\xd9\x88\xd8\xac\xd9\x85\xd9\x8a\xd9\x84,'): ['\xd9\x88\xd9\x84\xd9\x83\xd9\x86'],('\xd8\xb1\xd8\xa7\xd8\xa6\xd8\xb9', '\xd9\x88\xd9\x8a\xd8\xb3\xd8\xaa\xd8\xad\xd9\x82'): ['\xd8\xa7\xd9\x84\xd8\xaa\xd8\xac\xd8\xb1\xd8\xa8\xd8\xa9.'],('\xd8\xb3\xd8\xaa\xd9\x83\xd9\x88\xd9\x86', '\xd9\x85\xd8\xae\xd8\xaa\xd9\x84\xd9\x81\xd8\xa9.'): ['\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86'],('\xd8\xb9\xd9\x84\xd9\x8a\xd9\x83\xd9\x85', '\xd8\xa3\xd9\x86\xd8\xa7'): ['\xd8\xa8\xd8\xb5\xd8\xaf\xd8\xaf'],('\xd9\x81\xd9\x8a', '\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86.'): ['\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86'],('\xd9\x85\xd8\xae\xd8\xaa\xd9\x84\xd9\x81\xd8\xa9.', '\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86'): ['\xd8\xb1\xd8\xa7\xd8\xa6\xd8\xb9'],('\xd9\x85\xd8\xb9', '\xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa8\xd9\x8a'): ['\xd8\xb3\xd8\xaa\xd9\x83\xd9\x88\xd9\x86'],('\xd9\x87\xd8\xb0\xd8\xa7', '\xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd8\xac'): ['\xd9\x81\xd9\x8a'],('\xd9\x88\xd8\xac\xd9\x85\xd9\x8a\xd9\x84,', '\xd9\x88\xd9\x84\xd9\x83\xd9\x86'): ['\xd8\xaa\xd8\xac\xd8\xb1\xd8\xa8\xd8\xa9'],('\xd9\x88\xd9\x84\xd9\x83\xd9\x86', '\xd8\xaa\xd8\xac\xd8\xb1\xd8\xa8\xd8\xa9'): ['\xd8\xa8\xd8\xa7\xd9\x8a\xd8\xab\xd9\x88\xd9\x86'],('\xef\xbb\xbf\xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85', '\xd8\xb9\xd9\x84\xd9\x8a\xd9\x83\xd9\x85'): ['\xd8\xa3\xd9\x86\xd8\xa7']}
如果Python 3:

{('ï»؟ط§ظ„ط³ظ„ط§ظ…', 'ط¹ظ„ظٹظƒظ…'): ['ط£ظ†ط§'],
 ('ط£ظ†ط§', 'ط¨طµط¯ط¯'): ['طھط¬ط±ط¨ط©'],
 ('ط§ظ„ط¨ط±ظ†ط§ظ…ط¬', 'ظپظٹ'): ['ط¨ط§ظٹط«ظˆظ†.'],
 ('ط§ظ„ط¹ط±ط¨ظٹ', 'ط³طھظƒظˆظ†'): ['ظ…ط®طھظ„ظپط©.'],
 ('ط¨ط§ظٹط«ظˆظ†', 'ط±ط§ط¦ط¹'): ['ظˆط¬ظ…ظٹظ„,', 'ظˆظٹط³طھط\xadظ‚'],
 ('ط¨ط§ظٹط«ظˆظ†', 'ظ…ط¹'): ['ط§ظ„ط¹ط±ط¨ظٹ'],
 ('ط¨ط§ظٹط«ظˆظ†.', 'ط¨ط§ظٹط«ظˆظ†'): ['ط±ط§ط¦ط¹'],
 ('ط¨طµط¯ط¯', 'طھط¬ط±ط¨ط©'): ['ظ‡ط°ط§'],
 ('ط±ط§ط¦ط¹', 'ظˆط¬ظ…ظٹظ„,'): ['ظˆظ„ظƒظ†'],
 ('ط±ط§ط¦ط¹', 'ظˆظٹط³طھط\xadظ‚'): ['ط§ظ„طھط¬ط±ط¨ط©.'],
 ('ط³طھظƒظˆظ†', 'ظ…ط®طھظ„ظپط©.'): ['ط¨ط§ظٹط«ظˆظ†'],
 ('ط¹ظ„ظٹظƒظ…', 'ط£ظ†ط§'): ['ط¨طµط¯ط¯'],
 ('طھط¬ط±ط¨ط©', 'ط¨ط§ظٹط«ظˆظ†'): ['ظ…ط¹'],
 ('طھط¬ط±ط¨ط©', 'ظ‡ط°ط§'): ['ط§ظ„ط¨ط±ظ†ط§ظ…ط¬'],
 ('ظˆط¬ظ…ظٹظ„,', 'ظˆظ„ظƒظ†'): ['طھط¬ط±ط¨ط©'],
 ('ظˆظ„ظƒظ†', 'طھط¬ط±ط¨ط©'): ['ط¨ط§ظٹط«ظˆظ†'],
 ('ظپظٹ', 'ط¨ط§ظٹط«ظˆظ†.'): ['ط¨ط§ظٹط«ظˆظ†'],
 ('ظ‡ط°ط§', 'ط§ظ„ط¨ط±ظ†ط§ظ…ط¬'): ['ظپظٹ'],
 ('ظ…ط®طھظ„ظپط©.', 'ط¨ط§ظٹط«ظˆظ†'): ['ط±ط§ط¦ط¹'],
 ('ظ…ط¹', 'ط§ظ„ط¹ط±ط¨ظٹ'): ['ط³طھظƒظˆظ†']}
我已经尝试了很多解决方案,但问题仍然没有解决

我试过:

解决方案1:

stack= d.items()
    while stack:
        k, v = stack.pop()
        if isinstance(v, dict):
            stack.extend(v.iteritems())
        else:
            output= "%s: %s" % (k, v)
            print output.decode('utf8')
解决方案2:

 for k, v in d.items():
       print k, v
解决方案3:

for k, v in d.keys():
    print k, v
    for attribute, value in d.items():
        print('{} : {}'.format(attribute, value))
解决方案4:

 words = text.split()
    uniwords= unicode(words)
    print uniwords
但问题依然存在。我还尝试了
编解码器
模块,但仍然像上面的输出那样打印。只有在使用文件I/O而不是普通文本时,才会出现此问题


所以我需要的是,如果我打印split函数,它应该像在英语示例中一样以阿拉伯语打印。

在python3中,您需要将
fname=open(file'r')
更改为
fname=open(file'r',encoding='utf-8')


示例:在文件上运行以下代码:

with open('/tmp/test.txt', 'r', encoding='utf-8') as f:
    l = f.read()
    print(l.split())

您将得到一个单词列表,该列表由

Python尝试使用默认操作系统编码打开文件,而该文件可能是用UTF-8编码的。您需要:

open('...', 'r', encoding='utf-8')

另外,除非你有充分的理由,否则尽量远离Python 2.7。unicode字符串既古老又很难正确使用。

字符串的
repr
显示为字节序列是否有问题?如果使用split()函数,我需要的输出是,如果我使用split()函数,我希望在输出中看到阿拉伯文字,而不是上面的输出。
print'\xd8\xd8\xb5\xd8\xaf\xd8\xaf'。解码('utf-8')
显示
بدد
。这不是我需要的,我实际上需要split函数的输出,就像我使用英文文件打印时没有任何问题一样。也许我需要编辑我的Q以便你能更多地理解我。如果你想让容器数据类型以可读格式显示unicode字符串,你必须切换到python 3。
open('...', 'r', encoding='utf-8')