কম্পিউটার টিউটোরিয়াল

পাইথন প্রোগ্রাম: স্ট্রিং লিস্টে সাবস্ট্রিংর সকল আবির্ভাব বের করা

একটি স্ট্রিংয়ে কোনো সাবস্ট্রিংর সকল অবস্থান (ইন্ডেক্স) বের করার জন্য লিস্ট কম্প্রিহেনশন এবং startswith() মেথড ব্যবহার করা যায়।

উদাহরণ

my_string = "Python learn code test fun amazing object oriented"
sub_string = "object"

print("স্ট্রিং:", my_string)
print("সাবস্ট্রিং:", sub_string)

# startswith() দিয়ে সব অবস্থান বের করা
positions = [i for i in range(len(my_string)) if my_string.startswith(sub_string, i)]

print("সাবস্ট্রিংর অবস্থানগুলো:", positions)

আউটপুট

স্ট্রিং: Python learn code test fun amazing object oriented
সাবস্ট্রিং: object
সাবস্ট্রিংর অবস্থানগুলো: [35]

ব্যাখ্যা

  • my_string.startswith(sub_string, i) — ইন্ডেক্স i থেকে সাবস্ট্রিং শুরুর হয় কিনা চেক করে
  • range(len(my_string)) — স্ট্রিংর প্রতিটি অবস্থান চেক করে
  • লিস্ট কম্প্রিহেনশন সব মিলে যাওয়া ইন্ডেক্স সংগ্রহ করে

উন্নত পদ্ধতি: re মডিউল ব্যবহার

import re

positions = [m.start() for m in re.finditer(re.escape(sub_string), my_string)]
print(positions)  # [35]

re.finditer বেশি দক্ষ এবং ওভারল্যাপিং ম্যাচও হ্যান্ডেল করতে পারে।

ওভারল্যাপিং ম্যাচ উদাহরণ

text = "aaaaa"
sub = "aa"

# startswith পদ্ধতি (ওভারল্যাপিং পাবে)
[i for i in range(len(text)) if text.startswith(sub, i)]  # [0, 1, 2, 3]

# re.finditer (ডিফল্টে ওভারল্যাপিং দেবে না)
[m.start() for m in re.finditer(re.escape(sub), text)]  # [0, 2]

# ওভারল্যাপিং পেতে lookahead ব্যবহার
[m.start() for m in re.finditer(f'(?={re.escape(sub)})', text)]  # [0, 1, 2, 3]
  1. দেওয়া স্ট্রিংয়ের সকল পারমিউটেশন প্রিন্ট করার পাইথন প্রোগ্রাম

  2. পাইথন প্রোগ্রাম: লিস্ট থেকে অনন্য (Unique) মান প্রিন্ট করা

  3. পাইথনে একটি লিস্টের সব সাবলিস্ট প্রিন্ট করার প্রোগ্রাম

  4. পাইথনে দুটি লিস্টের সাধারণ উপাদান প্রিন্ট করার প্রোগ্রাম