对于蟒蛇排序波斯串[复制]

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

这个问题已经在这里有一个答案:

我想使用Python的排序功能,但它不能很好地工作。

sorted( ['ا', 'ب', 'پ', 'ح', 'س', 'ص', 'ف', 'ک', 'ک', 'ک', 'م', 'م']) = 
 ['ا', 'ب', 'ح', 'س', 'ص', 'ف', 'م', 'م', 'پ', 'ک', 'ک', 'ک']
python persian
2个回答
4
投票

尝试使用PyICU

import PyICU
collator = PyICU.Collator.createInstance(PyICU.Locale('fa_IR.UTF-8'))

print ([i for i in sorted(['ا', 'ب', 'پ', 'ح', 'س', 'ص', 'ف', 'ک', 'ک', 'ک', 'م', 'م'], key=collator.getSortKey)])

1
投票

不,它工作得很好......我相信sorted排序基于其相关联的Unicode值字符。以下是每个字符的Unicode字符:

ا : \u0627
ب : \u0628
ح : \u062d
س : \u0633
ص : \u0635
ف : \u0641
م : \u0645
پ : \u067e
ک : \u06a9

正如你所看到的,پ的unicode是\u067eب的unicode是\u0628。而之所以说是ب也是一个阿拉伯字符一样احسصفم。虽然پک都没有。

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