Сортировать персидские строки для python
Я хочу использовать функцию сортировки Python, но она не работает хорошо.
sorted( ['ا', 'ب', 'پ', 'ح', 'س', 'ص', 'ف', 'ک', 'ک', 'ک', 'م', 'م']) =
['ا', 'ب', 'ح', 'س', 'ص', 'ف', 'م', 'م', 'پ', 'ک', 'ک', 'ک']
2 ответа
Решение
Попробуйте использовать PyICU:
import PyICU
collator = PyICU.Collator.createInstance(PyICU.Locale('fa_IR.UTF-8'))
print ([i for i in sorted(['ا', 'ب', 'پ', 'ح', 'س', 'ص', 'ف', 'ک', 'ک', 'ک', 'م', 'م'], key=collator.getSortKey)])
Нет, работает хорошо... я верю sorted
сортирует символы в зависимости от значения Unicode. Ниже приводится символ Unicode для каждого символа:
ا : \u0627
ب : \u0628
ح : \u062d
س : \u0633
ص : \u0635
ف : \u0641
م : \u0645
پ : \u067e
ک : \u06a9
Как видите, юникод پ
является \u067e
в то время как Юникод ب
является \u0628
, И причина этого заключается в ب
также арабский символ, такой же, как ا
, ح
, س
, ص
, ف
, а также م
, В то время как پ
а также ک
не.