نمایش نتایج 1 تا 3 از 3

نام تاپیک: مشکل سورت(چینش) براساس حروف الفبای فارسی در پایتون

  1. #1

    Post مشکل سورت(چینش) براساس حروف الفبای فارسی در پایتون

    وقتی از تابع سورت پایتون(نسخه من 3.7.2) استفاده می کنیم سورت به درستی انجام نمیشه و برخی حروف الفبا در جای مناسب قرار نمیگیرن.
    این حروف عبارتند از چ ک گ پ ژ که در چینش بعد از حرف "ه" و قبل از حرف "ی" قرار می گیرند.
    هر چه جستجو کردم در جایی ندیدم که به این مشکل اشاره کرده باشند اما من هم روی ویندوز و هم لینکس امتحان کردم و نتیجه همین بود.


    نمونه کد را هم می آورم خودتان تست کنید:

    #testing farsi sort
    lst = [
    "x",
    "ژاله",
    "سیب",
    "یاور",
    "پرواز",
    "مشنگ",
    "گلابی",
    "آب",
    "چابهار",
    "هاون",
    "فیروز",
    "کوسه",
    "لیف",
    "ارگ",
    "ارک",
    "چاه",
    ]

    lst.sort()
    print(lst)
    with open("lst.txt", 'w', encoding="utf-8")as file:
    for l in lst:
    file.write(l+"\n")




    که نتیجه به صورت زیر میشود:

    x
    آب
    ارک
    ارگ
    سیب
    فیروز
    لیف
    مشنگ
    هاون
    پرواز
    چابهار
    چاه
    ژاله
    کوسه
    گلابی
    یاور


  2. #2
    کاربر جدید آواتار Arioun
    تاریخ عضویت
    تیر 1397
    محل زندگی
    لارستان، فارس
    پست
    12

    نقل قول: مشکل سورت(چینش) براساس حروف الفبای فارسی در پایتون

    سلام دوست عزیز.
    کد رو تست کردم و دیدم که کاملا درست می‌فرمایید. نمی‌دونم اصل مشکل از کجاست. ولی یه راه حل موقت اینه که یک فانکشن برای این کار بنویسید و ازش برای کارهاتون استفاده کنید. توی مثالتون حرف x هم دیده میشه که خب، اگر یک لیست فارسی و انگلیسی باشه، قاعدتا اول حروف انگلیسی میاد. من یه مثال میزنم با اولویت حروف فارسی، یه مثال هم با اولویت حروف انگلیسی. اصلی‌ترین دستوری که بکار میره اینه:

    sorted(lst, key=lambda word: [alphabet.index(c) for c in word])


    من دقیقا نمی‌دونم کد پایتون رو چطور باید قرار بدم اینجا. به همین دلیل، مثال کامل رو ضمیمه می‌کنم.
    فایل های ضمیمه فایل های ضمیمه

  3. #3

    نقل قول: مشکل سورت(چینش) براساس حروف الفبای فارسی در پایتون

    ممنونم آریون عزیز،
    متاسفانه پایتون هنوز هم این مشکل رو برطرف نکرده. تنها روشی که در حال حاضر میتونه فارسی رو صحیح سورت کنه روش زیره:

    import PyICU
    collator = PyICU.Collator.createInstance(PyICU.Locale('fa_IR.UTF-8'))
    lst = sorted(lst,key=collator.getSortKey)

تاپیک های مشابه

  1. سوال: کسی میتونه سورس کد در بیاره...
    نوشته شده توسط rahgozargharibe در بخش jQuery
    پاسخ: 6
    آخرین پست: پنج شنبه 19 اردیبهشت 1398, 18:41 عصر
  2. کسی میتونه مشکل این سورس رو بگه ؟
    نوشته شده توسط soket$ در بخش برنامه نویسی در 6 VB
    پاسخ: 6
    آخرین پست: شنبه 30 دی 1391, 20:48 عصر
  3. کسی میتونه مشکل این سورس رو بگه ؟
    نوشته شده توسط soket$ در بخش VB.NET
    پاسخ: 2
    آخرین پست: شنبه 30 دی 1391, 16:32 عصر
  4. مبتدی: سلام کسی میتونه سورس این 3 تا برنامه‌رو بهم بده با نت بینس
    نوشته شده توسط blackband در بخش برنامه‌نویسی جاوا
    پاسخ: 5
    آخرین پست: چهارشنبه 03 خرداد 1391, 19:57 عصر
  5. چندتا سوال در مورد asp.net دارم خیلی فوری اگه کسی میتونه....
    نوشته شده توسط likable6 در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: چهارشنبه 18 آذر 1383, 14:03 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •