স্ট্রিং-এ последовательно আসা একই ক্যারেক্টারগুলো গ্রুপে ভাগ করতে itertools.groupby ব্যবহার করা হয়। এটি রান-লেথ এনকোডিং (RLE)-র ভিত্তি।
উদাহরণ কোড
from itertools import groupby
my_string = 'pppyyytthhhhhhhoooooonnn'
print("The string is:")
print(my_string)
# groupby দিয়ে কনসিকিউটিভ ক্যারেক্টার গ্রুপ করা
my_result = ["".join(grp) for elem, grp in groupby(my_string)]
print("The result is:")
print(my_result)
আউটপুট
The string is: pppyyytthhhhhhhooonnn The resultant split string is: ['ppp', 'yyy', 'tt', 'hhhhhhh', 'ooo', 'nnn']
ব্যাখ্যা
groupby(my_string)— প্রতিটি কনসিকিউটিভ গ্রুপের জন্য (key, group) জেনারেট করে।key— ক্যারেক্টার (p, y, t, h, o, n)।grp— ইটারেটর যা সেই ক্যারেক্টারগুলো ধারণ করে।"".join(grp)— ইটারেটরকে স্ট্রিংে জোড়া দেয়।
বিকল্প: রান-লেথ এনকোডিং (RLE)
# ক্যারেক্টার এবং তার কাউন্ট পাওয়ার জন্য
rle = [(char, len(list(group))) for char, group in groupby(my_string)]
print(rle) # [('p', 3), ('y', 3), ('t', 2), ('h', 7), ('o', 3), ('n', 3)]
এটি ডেটা কমপ্রেশন, টেক্সট প্রসেসিং, এবং প্যাটার্ন রিকগনিশনে ব্যবহারী।