• 0

كيف أرتب سلاسل unicode النصية بترتيب أبجدي في بايثون؟

يرتب بايثون السلاسل النصبة حسب قيمة البايت التي تملكها بشكل افتراضي ، أي أن الحرف é يأتي بعد z وهكذا... فما هي أفضل طريقة لترتيب هذه السلاسل النصية في بايثون؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك عدّة طرق يمكنك من خلالها ترتيب سلسلة unicode النصية، لكن حسب رأيي فأفضلها استخدام مكتبة ICU التابعة لـ IBM، والتي تسمى نسختها في بايثون بـ PyICU.
ملاحظة: الفرق الرئيسي بين ICU و دالة locale.strcoll هو أن الأولى تستخدم Unicode Collation Algorithm بينما الثانية تستخدم ISO 14651.
هذا مثال بسيط لاستخدام مكتبة icu (التي يجب أن تُثبتها أولا) لفرز سلسلة نصية معينة:

>>> import icu # pip install PyICU
>>> sorted(['a','b','c','ä'])
['a', 'b', 'c', 'ä']
>>> collator = icu.Collator.createInstance(icu.Locale('de_DE.UTF-8'))
>>> sorted(['a','b','c','ä'], key=collator.getSortKey)
['a', 'ä', 'b', 'c']

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن