为 python 排序波斯语字符串
sort Persian strings for python
我想使用 python 的排序功能,但效果不佳。
sorted( ['ا', 'ب', 'پ', 'ح', 'س', 'ص', 'ف', 'ک', 'ک', 'ک', 'م', 'م']) =
['ا', 'ب', 'ح', 'س', 'ص', 'ف', 'م', 'م', 'پ', 'ک', 'ک', 'ک']
不,它工作得很好...我相信 sorted
根据相关的 unicode 值对字符进行排序。以下是每个字符的unicode字符:
ا : \u0627
ب : \u0628
ح : \u062d
س : \u0633
ص : \u0635
ف : \u0641
م : \u0645
پ : \u067e
ک : \u06a9
如您所见,پ
的unicode是\u067e
,而ب
的unicode是\u0628
。原因是 ب
也是阿拉伯字符,与 ا
、ح
、س
、ص
、ف
相同和 م
。而 پ
和 ک
不是。
尝试使用 PyICU:
import PyICU
collator = PyICU.Collator.createInstance(PyICU.Locale('fa_IR.UTF-8'))
print ([i for i in sorted(['ا', 'ب', 'پ', 'ح', 'س', 'ص', 'ف', 'ک', 'ک', 'ک', 'م', 'م'], key=collator.getSortKey)])
我想使用 python 的排序功能,但效果不佳。
sorted( ['ا', 'ب', 'پ', 'ح', 'س', 'ص', 'ف', 'ک', 'ک', 'ک', 'م', 'م']) =
['ا', 'ب', 'ح', 'س', 'ص', 'ف', 'م', 'م', 'پ', 'ک', 'ک', 'ک']
不,它工作得很好...我相信 sorted
根据相关的 unicode 值对字符进行排序。以下是每个字符的unicode字符:
ا : \u0627
ب : \u0628
ح : \u062d
س : \u0633
ص : \u0635
ف : \u0641
م : \u0645
پ : \u067e
ک : \u06a9
如您所见,پ
的unicode是\u067e
,而ب
的unicode是\u0628
。原因是 ب
也是阿拉伯字符,与 ا
、ح
、س
、ص
、ف
相同和 م
。而 پ
和 ک
不是。
尝试使用 PyICU:
import PyICU
collator = PyICU.Collator.createInstance(PyICU.Locale('fa_IR.UTF-8'))
print ([i for i in sorted(['ا', 'ب', 'پ', 'ح', 'س', 'ص', 'ف', 'ک', 'ک', 'ک', 'م', 'م'], key=collator.getSortKey)])