为python排序波斯语字符串

时间:2019-01-31 10:41:43

标签: python persian

我想使用python的sort函数,但效果不佳。

sorted( ['ا', 'ب', 'پ', 'ح', 'س', 'ص', 'ف', 'ک', 'ک', 'ک', 'م', 'م']) = 
 ['ا', 'ب', 'ح', 'س', 'ص', 'ف', 'م', 'م', 'پ', 'ک', 'ک', 'ک']

2 个答案:

答案 0 :(得分:4)

尝试使用PyICU

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

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

答案 1 :(得分:1)

否,它运作良好...我相信sorted根据相关的unicode值对字符进行排序。以下是每个字符的unicode字符:

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

如您所见,پ的unicode是\u067e,而ب的unicode是\u0628。原因是ب也是阿拉伯语字符,与احسصف,和م。而پک不是。