为什么打印订单混合了浮动和阿拉伯字符串?

问题描述 投票:2回答:1

在Python 3中,这个:

alternates={'Qabr Ḩamdān', 'قبور حمدان', 'Qabr Hamdan', 'Qubur Hamdan', 'Qubūr Ḩamdān', 'qbwr hmdan'}
for x in alternates:
    print(12.1, x, 13.2)

产生这个:

12.1 Qabr Ḩamdān 13.2
12.1 قبور حمدان 13.2
12.1 Qabr Hamdan 13.2
12.1 Qubur Hamdan 13.2
12.1 Qubūr Ḩamdān 13.2
12.1 qbwr hmdan 13.2

请注意,第二行中的阿拉伯字符串无序。为什么?

python python-3.x unicode printing
1个回答
2
投票

这很正常。阿拉伯语用Unicode表示。

阿拉伯语是从右到左书写的,当阿拉伯语发音者输入文本时,他们会期望阿拉伯语从右向左出现......但他们会期望像13.2这样的数字出现从左到右的整体布局中嵌入了从左到右的块。 Unicode双向算法尽力满足这一期望。细节非常复杂,并在Unicode Standard Annex #9中列出。

© www.soinside.com 2019 - 2024. All rights reserved.