যখন স্ট্রিং-এর মধ্যে এম্বেড করা সংখ্যার ভিত্তিতে স্ট্রিং লিস্ট সাজাতে হয়, তবে রেগুলার এক্সপ্রেশন (regex) ব্যবহার করে সংখ্যা বের করে সেটিকে সর্ট কি হিসেবে ব্যবহার করা হয়।
উদাহরণ
import re
def extract_first_number(s):
"""স্ট্রিং থেকে প্রথম সংখ্যা বের করে ইন্টিজার হিসেবে ফেরত দেয়"""
match = re.search(r'\d+', s)
return int(match.group()) if match else 0
my_list = ["pyt23hon", "fu30n", "lea14rn", "co00l", "ob8uje3345t"]
print("মূল লিস্ট:", my_list)
# কাস্টম কি ফাংশন দিয়ে সর্ট
my_list.sort(key=extract_first_number)
print("সাজানো লিস্ট:", my_list)
আউটপুট
মূল লিস্ট: ['pyt23hon', 'fu30n', 'lea14rn', 'co00l', 'ob8uje3345t']
সাজানো লিস্ট: ['co00l', 'ob8uje3345t', 'lea14rn', 'pyt23hon', 'fu30n']
ব্যাখ্যা
re.search(r'\d+', s)— স্ট্রিং-এ প্রথম সংখ্যা খুঁজে বের করেco00l→ 00 → ০ (সর্বনিম্ন)ob8uje3345t→ ৮ (দ্বিতীয়)lea14rn→ ১৪ (তৃতীয়)pyt23hon→ ২৩ (চতুর্থ)fu30n→ ৩০ (সর্বোচ্চ)
উন্নত সংস্করণ: সব সংখ্যা বিবেচনা
def extract_all_numbers(s):
"""স্ট্রিং-এর সব সংখ্যা বের করে টাপল হিসেবে ফেরত দেয়"""
return tuple(map(int, re.findall(r'\d+', s)))
# টাপল কম্পারিজন: প্রথম সংখ্যা, তারপর দ্বিতীয়, ইত্যাদি
my_list.sort(key=extract_all_numbers)
এটি একাধিক সংখ্যা থাকলে আরও নির্ভুল সর্টিং দেয়।