এই ধরণের সাজানোর মধ্যে আপনি স্ট্রিংয়ের মধ্যে সংখ্যার ভিত্তিতে সাজাতে চান তাকে প্রাকৃতিক সাজানো বা মানব সাজানো বলে। উদাহরণস্বরূপ, যদি আপনার কাছে পাঠ্য থাকে:
['Hello1','Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
তারপরে আপনি সাজানো তালিকাটি হতে চান:
['Hello1', 'Hello2','Hello12', 'Hello17', 'Hello25', 'Hello29']
এবং না:
['Hello1','Hello12', 'Hello17', 'Hello2', 'Hello25', 'Hello29']
এটি করার জন্য আমরা অতিরিক্ত প্যারামিটার ব্যবহার করতে পারি যা sort() ব্যবহার করে। এটি একটি ফাংশন যা তালিকার এন্ট্রি থেকে কী গণনা করতে বলা হয়। আমরা স্ট্রিং থেকে সংখ্যা বের করতে এবং টেক্সট এবং সংখ্যা উভয়েই সাজানোর জন্য regex ব্যবহার করি।
import re
def atoi(text):
return int(text) if text.isdigit() elsetext
def natural_keys(text):
return [ atoi(c) for c in re.split('(\d+)',text) ]
my_list =['Hello1', 'Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
my_list.sort(key=natural_keys)
print my_list এটি আপনাকে আউটপুট দেবে:
['Hello1', 'Hello2','Hello12', 'Hello17', 'Hello25', 'Hello29']