স্ট্রিং মেথড, পর্ব ৪

লিখেছেন: কাজী মুশফিকুর রহমান || সফটওয়্যার প্রকৌশলী, টেকনিয়াস (সফটওয়্যার নির্মাণ প্রতিষ্ঠান) || তারিখঃ 03 মে, 2024


find() মেথড এর ব্যবহার

find() মেথডটি কোনো একটি নির্দিষ্ট ভ্যালু স্ট্রিং এর যে পজিশনে থাকে তার ইনডেক্স নম্বর রিটার্ন করে। নিচে আমি একটি স্ট্রিং( 'Earth' ) ডিফাইন করেছি, যেখানে ৫ টি অক্ষর (ক্যারেক্টার) রয়েছে, E, a, r, t, এবং h। ক্যারেক্টারগুলো কে আমি নিচের বক্সের মধ্যে সাজিয়ে তাদের ক্রমিক নম্বর দিলাম, এবং নাম্বারিং শুরু করলাম 0 থেকে (অর্থাৎ 0 থেকে 4 পর্যন্ত)। এখন এই ক্রমিক নাম্বারকে আমরা স্ট্রিংয়ের ইনডেক্স নাম্বার বলতে পারি। জেনে রাখা ভালো যে, ইনডেক্স নাম্বার সাধারণত 0 থেকে শুরু হয়।

এখন, উপরের স্ট্রিংটির ক্যারেক্টার গুলোর ইনডেক্স নাম্বার পেতে নিচের কোডটি রান করব।

কোড:

first_index = string.find('E')          # লাইনটি ‘E’ এর ইনডেক্স নাম্বার 0 রিটার্ন  করবে।

second_index = string.find('a')     # লাইনটি ‘a’ এর ইনডেক্স নাম্বার 1 রিটার্ন  করবে।

third_index = string.find('r')          # লাইনটি ‘r’ এর ইনডেক্স নাম্বার 2 রিটার্ন  করবে।

fourth_index = string.find('t')        # লাইনটি ‘t’ এর ইনডেক্স নাম্বার 3 রিটার্ন  করবে।

fifth_index = string.find('h')            # লাইনটি ‘h’ এর ইনডেক্স নাম্বার 4 রিটার্ন  করবে।

 

print('first_index: ', first_index)            # লাইনটি ‘E’ এর ইনডেক্স নাম্বার 0 প্রিন্ট করবে।

print('second_index: ', second_index)  # লাইনটি ‘a’ এর ইনডেক্স নাম্বার 1 প্রিন্ট করবে।

print('third_index: ', third_index)          # লাইনটি ‘r’ এর ইনডেক্স নাম্বার 2 প্রিন্ট করবে।

print('fourth_index: ', fourth_index)     # লাইনটি ‘t’ এর ইনডেক্স নাম্বার 3 প্রিন্ট করবে।

print('fifth_index: ', fifth_index)             # লাইনটি ‘h’ এর ইনডেক্স নাম্বার 4 প্রিন্ট করবে।

 

উপরের কোডটি রান করলে নিচের আউটপুটটি দিবে।

আউটপুট:

first_index:  0

second_index:  1

third_index:  2

fourth_index:  3

fifth_index:  4

 

আপনি যে ভ্যালুটি খুঁজছেন যদি সেটি স্ট্রিংটিতে না থাকে, তাহলে find() মেথডটি -1 রিটার্ন করে,  এবং এ কথা বলে দেয় যে, আপনি যে ভ্যালুটি চাচ্ছেন তা স্ট্রিং এ নেই। নিচের কোডটি রান করলে বিষয়টি স্পষ্ট হয়ে যাবে।

কোড:

letter = string.find('q')     # লাইনটি -1 রিটার্ন  করবে।

print('letter: ', letter)

আউটপুট:

letter:  -1

 

find () মেথড ব্যবহারের সিনটেক্স:

ভ্যারিয়েবলের নাম = string.find(‘value’)

ভ্যারিয়েবলের নাম এর পরে ‘=’ চিহ্ন, তারপর string, তারপর ডট চিহ্ন, তারপর find() মেথডটির ভেতরে যে ভ্যালুটির পজিশন জানতে চান সেটি উল্লেখ করতে হবে। এই স্ট্রাকচারটি ফলো করলে আপনি আপনার প্রত্যাশিত ফলাফল পেয়ে যাবেন।

উদাহরণ:

return_value = string.find(‘value’)

নিচের কোডটি দেখুন, আশা করি আপনার কাছে বিষয়টি স্পষ্ট হয়ে যাবে।

কোড:

text = 'The Earth is a planet in the universe.'

print('text: ', text)

index_number = text.find('Earth')

print('The position of Earth in the above string: ', index_number)

 

উপরের কোড এর প্রথম লাইনে আমি একটি স্ট্রিং ডিফাইন করেছি, এবং  স্ট্রিংটি কে text নামক ভ্যারিয়েবল এর মধ্যে স্টোর করেছি। দ্বিতীয় লাইনে text টি প্রিন্ট করেছি। তৃতীয় লাইনে find() মেথডটি ব্যবহার করে স্ট্রিং এ ‘Erath’ এর ইনডেক্স নাম্বার বের করেছি এবং এর রিটার্ন (প্রাপ্ত) ভ্যালুকে index_number নামক  ভ্যারিয়েবল এর মধ্যে স্টোর করেছি। যেহেতু উপরের স্ট্রিং এ ‘Earth’ শুরু হয়েছে 4 নাম্বার ইনডেক্স থেকে, তাই এর রিটার্ন ভালো হবে 4। চতুর্থ  লাইনে ইনডেক্স নাম্বারটি প্রিন্ট করেছি। এখন কোডটি রান করলে আমরা নিচের আউটপুটটি পাব।

আউটপুট:

text:  The Earth is a planet in the universe.

The position of Earth in the above string:  4

 

index() মেথড এর ব্যবহার

index() মেথডটি কোনো একটি নির্দিষ্ট ভ্যালু স্ট্রিং এর যে পজিশনে থাকে তার ইনডেক্স নাম্বার রিটার্ন করে এবং এটি প্রায় find() মেথডের মতই কাজ করে। তবে পার্থক্য হলো, যদি সার্চিং ভ্যালুটি স্ট্রিং এর মধ্যে না থাকে, তাহলে find() মেথডটি একটি এরর রেইজ করে। নিচে আমি একটি স্ট্রিং( 'Universe' ) ডিফাইন করেছি, যেখানে ৮ টি অক্ষর (ক্যারেক্টার) রয়েছে, U, n, i, v, e, r, s এবং e। ক্যারেক্টারগুলো কে আমি নিচের বক্সের মধ্যে সাজিয়ে তাদের ক্রমিক নাম্বার দিলাম, এবং ক্রমিক নাম্বার শুরু করলাম 0 থেকে (অর্থাৎ 0 থেকে 7 পর্যন্ত)। এখন এই ক্রমিক নাম্বারকে আমরা স্ট্রিংয়ের ইনডেক্স নাম্বার বলতে পারি।

এখন, উপরের স্ট্রিংটির ক্যারেক্টার গুলোর ইনডেক্স নাম্বার পেতে নিচের কোডটি রান করব।

কোড:

text = 'Universe'

first_index = text.index('U')         # লাইনটি ‘U’ এর ইনডেক্স নাম্বার 0 রিটার্ন  করবে।

second_index = text.index('n')     # লাইনটি ‘n’ এর ইনডেক্স নাম্বার 1 রিটার্ন  করবে।

third_index = text.index('i')          # লাইনটি ‘i’ এর ইনডেক্স নাম্বার 2 রিটার্ন  করবে।

fourth_index = text.index('v')       # লাইনটি ‘v’ এর ইনডেক্স নাম্বার 3 রিটার্ন  করবে।

fifth_index = text.index('e')           # লাইনটি ‘e’ এর ইনডেক্স নাম্বার 4 রিটার্ন  করবে।

sixth_index = text.index('r')           # লাইনটি ‘r’ এর ইনডেক্স নাম্বার 5 রিটার্ন  করবে।

seventh_index = text.index('s')      # লাইনটি ‘s’ এর ইনডেক্স নাম্বার 6 রিটার্ন  করবে।

eighth_index = text.index('e', 5)     # লাইনটি ‘e’ এর ইনডেক্স নাম্বার 7 রিটার্ন  করবে।  এখানে আমি স্ট্রিং এর  5 ইনডেক্স থেকে শেষ পর্যন্ত সার্চ করেছি, আমার উদ্দেশ্য হলো এই রেঞ্জ এর মধ্যে যে ‘e’ আছে তার পজিশন জানা।

 

print('text: ', text)                                # লাইনটি স্ট্রিংটি প্রিন্ট করবে।

print('first_index: ', first_index)            # লাইনটি স্ট্রিংটির প্রথম ইনডেক্স প্রিন্ট করবে।

print('second_index: ', second_index) # লাইনটি স্ট্রিংটির দ্বিতীয় ইনডেক্স প্রিন্ট করবে।

print('third_index: ', third_index)         # লাইনটি স্ট্রিংটির তৃতীয় ইনডেক্স প্রিন্ট করবে।

print('fourth_index: ', fourth_index)     # লাইনটি স্ট্রিংটির চতুর্থ ইনডেক্স প্রিন্ট করবে।

print('fifth_index: ', fifth_index)             # লাইনটি স্ট্রিংটির পঞ্চম ইনডেক্স প্রিন্ট করবে।

print('sixth_index: ', sixth_index)            # লাইনটি স্ট্রিংটির ষষ্ঠ ইনডেক্স প্রিন্ট করবে।

print('seventh_index: ', seventh_index)  # লাইনটি স্ট্রিংটির সপ্তম ইনডেক্স প্রিন্ট করবে।

print('eighth_index: ', eighth_index)       # লাইনটি স্ট্রিংটির অষ্টম ইনডেক্স প্রিন্ট করবে।

 

উপরের কোডটি রান করলে নিচের আউটপুটটি দিবে।

আউটপুট:

text:  Universe

first_index:  0

second_index:  1

third_index:  2

fourth_index:  3

fifth_index:  4

sixth_index:  5

seventh_index:  6

eighth_index:  7

 

আপনি যে ভ্যালুটি খুঁজছেন যদি সেটি স্ট্রিংটিতে না থাকে, তাহলে index() মেথডটি একটি এরর রেইজ করে এবং এ কথা বলে দেয় যে, আপনি যে ভ্যালুটি চাচ্ছেন তা স্ট্রিং এ নেই। নিচের কোডটি রান করলে বিষয়টি স্পষ্ট হয়ে যাবে।

কোড:

text.index('w')

এই কোডের মাধ্যমে আমি জানতে চেয়েছি যে 'Universe' স্ট্রিংটি তে ‘w’ এর ইনডেক্স নাম্বার কোনটি। যেহেতু স্ট্রিংটি তে ‘w’ নেই, তাই মেথডটি একটি এরর মেসেজ দিয়েছে (ValueError: substring not found)। এই মেসেজের অর্থ হলো আপনি যে ভ্যালুটি (সাব স্ট্রিং টি) খুঁজছেন সেটি স্ট্রিং এ নাই। উল্লে খ্য যে, একটি স্ট্রিংয়ের প্রত্যেকটি ক্যারেক্টারকে সাব স্ট্রিং (substring) বলে। এখন উপরের লাইনটি রান করলে আমরা নিচের আউটপুট টি পাব।

আউটপুট:

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: substring not found

 

index() মেথড ব্যবহারের সিনটেক্স:

ভ্যারিয়েবলের নাম = string.index(‘value’)

ভ্যারিয়েবলের নাম এর পরে ‘=’ চিহ্ন, তারপর string, তারপর ডট চিহ্ন, তারপর index() মেথডটির ভেতরে যে ভ্যালুটির পজিশন জানতে চান সেটি উল্লেখ করতে হবে। এই স্ট্রাকচারটি ফলো করলে আপনি আপনার প্রত্যাশিত ফলাফল পেয়ে যাবেন।

উদাহরণ:

return_value = string.index(‘value’)

নিচের কোডটি দেখুন, আশা করি আপনার কাছে বিষয়টি স্পষ্ট হয়ে যাবে।

কোড:

statement = 'Bangladesh is a developing country.'

index_number = statement.index('Bangladesh')

index_number2 = statement.index('is')

print('statement: ',  statement)

print('Index number of Bangladesh: ', index_number)

print('Index number of is: ', index_number2)

 

উপরের কোড এর প্রথম লাইনে আমি একটি স্ট্রিং ডিফাইন করেছি, এবং  স্ট্রিংটি কে statement নামক ভ্যারিয়েবল এর মধ্যে স্টোর করেছি। দ্বিতীয় লাইনে ‘Bangladesh’ এর ইনডেক্স নম্বর বের করেছি, এবং এর প্রাপ্ত ভ্যালু (0) কে index_number নামক ভ্যারিয়েবলের মধ্যে স্টোর করেছি । তৃতীয় লাইনে ‘is’ এর ইনডেক্স নম্বর বের করেছি, এবং এর প্রাপ্ত ভ্যালু (11) কে index_number2 নামক ভ্যারিয়েবলের মধ্যে স্টোর করেছি । যেহেতু উপরের স্ট্রিং এ ‘is’ শুরু হয়েছে 11 নাম্বার ইনডেক্স থেকে, তাই এর রিটার্ন ভালো হবে 11। এখানে উল্লে খ্য যে, পাইথন এ স্পেস (space) ও একটি ক্যারেক্টার হিসাবে গন্য হয়। চতুর্থ লাইনে স্ট্রিংটি প্রিন্ট করেছি। পঞ্চম লাইনে ‘Bangladesh’ এর ইনডেক্স নাম্বার প্রিন্ট করেছি। এবং ষষ্ঠ লাইনে ‘is’ এর ইনডেক্স নাম্বার প্রিন্ট করেছি। এখন কোডটি রান করলে আমরা নিচের আউটপুটটি পাব।

আউটপুট:

statement:  Bangladesh is a developing country.

Index number of Bangladesh:  0

Index number of is:  11

 

বিশেষ দ্রষ্টব্য: স্ট্রিং এর বিল্ট ইন মেথড নিয়ে আমি কয়েকটি পর্বে আলোচনা করব, পরবর্তী পর্বে আরো কিছু মেথড এর আলোচনা থাকবে।