Python: স্ট্রিং-এ সাবস্ট্রিং আছে কিনা তা পরীক্ষা করুন

শর্তসাপেক্ষে সাধারণীকরণ এবং আরও নমনীয় কোড তৈরি করতে একটি স্ট্রিং-এ একটি সাবস্ট্রিং সহায়তা রয়েছে কিনা তা পরীক্ষা করা হচ্ছে। উপরন্তু, আপনার ডোমেন মডেলের উপর নির্ভর করে - একটি স্ট্রিং একটি সাবস্ট্রিং রয়েছে কিনা তা পরীক্ষা করা আপনাকে একটি বস্তুর ক্ষেত্র অনুমান করার অনুমতি দিতে পারে, যদি একটি স্ট্রিং নিজেই একটি ক্ষেত্র এনকোড করে।

এই নির্দেশিকাতে, আমরা তা দেখে নেব একটি স্ট্রিং একটি সাবস্ট্রিং রয়েছে কিনা তা কিভাবে পরীক্ষা করবেন পাইথনে।

সার্জারির in অপারেটর

পাইথন স্ট্রিং-এ একটি সাবস্ট্রিং আছে কিনা তা পরীক্ষা করার সবচেয়ে সহজ উপায় হল ব্যবহার করা in অপারেটর।

সার্জারির in পাইথনে সদস্যতার জন্য ডেটা স্ট্রাকচার পরীক্ষা করতে অপারেটর ব্যবহার করা হয়। এটি একটি বুলিয়ান ফেরত দেয় (হয় True or False) একটি স্ট্রিং ব্যবহার করে পাইথনে একটি সাবস্ট্রিং রয়েছে কিনা তা পরীক্ষা করতে in অপারেটর, আমরা কেবল সুপারস্ট্রিং-এ এটিকে আহ্বান করি:

fullstring = "StackAbuse"
substring = "tack"

if substring in fullstring:
    print("Found!")
else:
    print("Not found!")

এই অপারেটর একটি বস্তুর কল করার জন্য সংক্ষিপ্ত হয় __contains__ পদ্ধতি, এবং একটি তালিকায় একটি আইটেম বিদ্যমান কিনা তা পরীক্ষা করার জন্যও ভাল কাজ করে। এটা লক্ষনীয় যে এটা নাল-নিরাপদ নয়, তাই যদি আমাদের fullstring ইঙ্গিত করছিল None, একটি ব্যতিক্রম নিক্ষেপ করা হবে:

TypeError: argument of type 'NoneType' is not iterable

এটি এড়াতে, আপনি প্রথমে এটি নির্দেশ করে কিনা তা পরীক্ষা করতে চাইবেন৷ None অথবা না:

fullstring = None
substring = "tack"

if fullstring != None and substring in fullstring:
    print("Found!")
else:
    print("Not found!")

সার্জারির String.index() পদ্ধতি

পাইথনে স্ট্রিং টাইপ নামক একটি পদ্ধতি আছে index() যেটি একটি স্ট্রিং-এ একটি সাবস্ট্রিং-এর প্রথম ঘটনার প্রারম্ভিক সূচক খুঁজে পেতে ব্যবহার করা যেতে পারে।

সাবস্ট্রিং পাওয়া না গেলে, ক ValueError ব্যতিক্রম নিক্ষেপ করা হয়, যা একটি চেষ্টা-ব্যতীত-অন্য ব্লক দিয়ে পরিচালনা করা যেতে পারে:

fullstring = "StackAbuse"
substring = "tack"

try:
    fullstring.index(substring)
except ValueError:
    print("Not found!")
else:
    print("Found!")

এই পদ্ধতিটি উপযোগী যদি আপনারও সাবস্ট্রিং এর অবস্থান জানতে হয়, সম্পূর্ণ স্ট্রিং এর মধ্যে এর অস্তিত্বের বিপরীতে। পদ্ধতিটি নিজেই সূচকটি ফেরত দেয়:

print(fullstring.index(substring))

যদিও - একটি স্ট্রিং একটি সাবস্ট্রিং রয়েছে কিনা তা পরীক্ষা করার জন্য, এটি একটি ভার্বস পদ্ধতি।

String.find() পদ্ধতি

স্ট্রিং ক্লাস নামক আরেকটি পদ্ধতি আছে find() যা ব্যবহার করার চেয়ে বেশি সুবিধাজনক index(), প্রধানত কারণ আমাদের কোনো ব্যতিক্রম পরিচালনার বিষয়ে চিন্তা করার দরকার নেই।

If find() একটি মিল খুঁজে পায় না, এটি -1 প্রদান করে, অন্যথায় এটি বৃহত্তর স্ট্রিং-এ সাবস্ট্রিংয়ের বাম-সবচেয়ে সূচী প্রদান করে:

সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!

fullstring = "StackAbuse"
substring = "tack"

if fullstring.find(substring) != -1:
    print("Found!")
else:
    print("Not found!")

স্বাভাবিকভাবেই, এটি হিসাবে একই অনুসন্ধান সঞ্চালিত হয় index() এবং প্যারেন্ট স্ট্রিং এর মধ্যে সাবস্ট্রিং এর শুরুর সূচী প্রদান করে:

print(fullstring.find(substring))

রেগুলার এক্সপ্রেশন (RegEx)

রেগুলার এক্সপ্রেশনগুলি প্যাটার্ন মিলের জন্য স্ট্রিংগুলি পরীক্ষা করার জন্য আরও নমনীয় (যদিও আরও জটিল) উপায় প্রদান করে। রেগুলার এক্সপ্রেশনের সাহায্যে, আপনি আগেরগুলির মতো সাধারণ চেকের পরিবর্তে অনেক বড় অনুসন্ধান স্থানগুলির মাধ্যমে নমনীয় এবং শক্তিশালী অনুসন্ধানগুলি সম্পাদন করতে পারেন৷

পাইথনকে রেগুলার এক্সপ্রেশনের জন্য একটি বিল্ট-ইন মডিউল দিয়ে পাঠানো হয়, যাকে বলা হয় re. দ্য re মডিউল নামক একটি ফাংশন রয়েছে search(), যা আমরা একটি সাবস্ট্রিং প্যাটার্ন মেলে ব্যবহার করতে পারি:

from re import search

fullstring = "StackAbuse"
substring = "tack"

if search(substring, fullstring):
    print "Found!"
else:
    print "Not found!"

এই পদ্ধতিটি সর্বোত্তম যদি আপনার আরও জটিল ম্যাচিং ফাংশনের প্রয়োজন হয়, যেমন কেস ইনসেনসিটিভ ম্যাচিং, অথবা আপনি যদি বড় সার্চ স্পেস নিয়ে কাজ করছেন। অন্যথায় সাধারণ সাবস্ট্রিং ম্যাচিং ইউজ-কেসগুলির জন্য রেজেক্সের জটিলতা এবং ধীর গতি এড়ানো উচিত।

লেখক সম্পর্কে

এই নিবন্ধটি লিখেছিলেন জ্যাকব স্টপাক, একজন সফ্টওয়্যার পরামর্শদাতা এবং কোডের মাধ্যমে অন্যদের জীবনকে উন্নত করতে সহায়তা করার আবেগ সহ বিকাশকারী৷ জ্যাকব এর স্রষ্টা প্রাথমিক কমিট - কৌতূহলী বিকাশকারীদের তাদের প্রিয় প্রোগ্রামগুলি কীভাবে কোড করা হয় তা শিখতে সাহায্য করার জন্য একটি সাইট নিবেদিত৷ এর বৈশিষ্ট্যযুক্ত প্রকল্প মানুষকে সাহায্য করে গিট শিখুন কোড স্তরে।

সময় স্ট্যাম্প:

থেকে আরো Stackabuse