পাইথন startswith() ফাংশন চেক করে একটি স্ট্রিং নির্দিষ্ট সাবস্ট্রিং দিয়ে শুরু হয় কিনা। পাইথন endswith() চেক করে একটি স্ট্রিং একটি সাবস্ট্রিং দিয়ে শেষ হয় কিনা। উভয় ফাংশন True বা False রিটার্ন করে।
প্রোগ্রামিং-এ স্ট্রিং নিয়ে কাজ করার সময়, আপনি প্রায়শই চেক করতে চান কোনো স্ট্রিং কোনো নির্দিষ্ট ভ্যালু দিয়ে শুরু হয় কিনা বা শেষ হয় কিনা।
উদাহরণস্বরূপ, যদি আপনি একটি প্রোগ্রাম তৈরি করেন যা ইউজারের ফোন নম্বর সংগ্রহ করে, তবে আপনি চেক করতে চাইতে পারেন ইউজার তার কান্ট্রি কোড স্পেসিফাই করেছে কিনা। অথবা হয়তো আপনি একটি প্রোগ্রাম তৈরি করছেন যা চেক করছে ইউজারের নাম e দিয়ে শেষ হয় কিনা আপনার আর্কেডের একটি স্পেশাল প্রোমোশনের জন্য।
সেই কারণে বিল্ট-ইন ফাংশন startswith() এবং endswith() কাজে আসে। startswith() এবং endswith() ব্যবহার করা যায় যেন নির্ধারণ করা যায় একটি স্ট্রিং নির্দিষ্ট সাবস্ট্রিং দিয়ে শুরু হয় কিনা বা শেষ হয় কিনা, যথাক্রমে।
এই টিউটোরিয়ালে পাইথন startswith() এবং endswith() মেথড দুটোই কীভাবে ব্যবহার করতে হয় সেটি আলোচনা করা হবে যেন চেক করা যায় একটি স্ট্রিং নির্দিষ্ট সাবস্ট্রিং দিয়ে শুরু হয় কিনা বা শেষ হয় কিনা। আমরা প্রতিটি মেথড একটি প্রোগ্রামে কীভাবে ব্যবহার করা হয় তার উদাহরণও দেখব।
স্ট্রিং ইন্ডেক্স রিফ্রেশার
startsWith এবং endsWith নিয়ে কথা বলার আগে, পাইথন স্ট্রিং ইন্ডেক্স সম্পর্কে আমাদের জ্ঞান রিফ্রেশ করি।
একটি স্ট্রিং হলো ক্যারেক্টারদের একটি সিকোয়েন্স যেমন সংখ্যা, স্পেস, লেটার, এবং সিম্বল। আপনি স্ট্রিং-এর বিভিন্ন অংশ এক্সেস করতে পারেন ঠিক একইভাবে যেভাবে লিস্টের साथ করতে পারতেন।
স্ট্রিং-এর প্রতিটি ক্যারেক্টারের একটি ইন্ডেক্স ভ্যালু আছে। ইন্ডেক্স হলো স্ট্রিং-এ ক্যারেক্টারটি কোথায় অবস্থিত সেটির লোকেশন। ইন্ডেক্স নম্বর ০ থেকে শুরু হয়। উদাহরণস্বরূপ, এখানে Python Substrings স্ট্রিংটি ইন্ডেক্স নম্বরসহ:
| P | y | t | h | o | n | S | u | b | s | t | r | i | n | g | s | |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
স্ট্রিং-এর প্রথম ক্যারেক্টার P যের ইন্ডেক্স ভ্যালু ০। আমাদের লাস্ট ক্যারেক্টার, s, এর ইন্ডেক্স ভ্যালু ১৬। যেহেতু প্রতিটি ক্যারেক্টারের নিজস্ব ইন্ডেক্স নম্বর আছে, আমরা স্ট্রিংকে ম্যানিপুলেট করতে পারি সেখানে প্রতিটি লেটার কোথায় অবস্থিত সেটি বেস করে।
পাইথন Startswith
startswith() স্ট্রিং মেথড চেক করে একটি স্ট্রিং নির্দিষ্ট সাবস্ট্রিং দিয়ে শুরু হয় কিনা। যদি স্ট্রিংটি নির্দিষ্ট সাবস্ট্রিং দিয়ে শুরু হয়, তবে startswith() মেথড True রিটার্ন করে; অন্যথায়, ফাংশনটি False রিটার্ন করে।
পাইথন startswith() মেথডের সিনট্যাক্স:
string_name.startswith(substring, start_pos, end_pos)
startswith() মেথড তিনটি প্যারামিটার নেয়, যেগুলো নিম্নরূপ:
- substring হলো বড় স্ট্রিং-এর মধ্যে চেক করার স্ট্রিং (রিকোয়ার্ড)
- start_pos হলো স্ট্রিং ইন্ডেক্স পজিশন যেখান থেকে সাবস্ট্রিং সার্চ শুরু হবে (অপশনাল)
- end_pos হলো স্ট্রিং ইন্ডেক্স পজিশন যেখান পর্যন্ত সাবস্ট্রিং সার্চ চলবে (অপশনাল)
Substring প্যারামিটার কেস সেনসিটিভ। তাই, আপনি যদি একটি স্ট্রিং-এ s খুঁজেন, তবে এটি শুধু লোয়ারকেস s-এর উদাহরণ খুঁজবে। আপনি যদি আপারকেস S খুঁজতে চান, তবে সেটি স্পেসিফাই করতে হবে। 추가로, মনে রাখবেন পাইথনে ইন্ডেক্স পজিশন 0 থেকে শুরু হয়, যা start_pos এবং end_pos প্যারামিটারকে প্রভাবিত করবে।
চলুন একটি উদাহরণের মাধ্যমে startswith() মেথড একশনে দেখি।
মান লিন আমরা একটি আর্কেড অপারেটর এবং আমরা একটি স্পেশাল প্রোমোশন চালাচ্ছি। যেসব কাস্টমারের নাম J দিয়ে শুরু হয়, সকলকে প্রতিটি ১০০০ টিকেট জিতলে ২০০ এক্সট্রা টিকেট পাওয়ার যোগ্য। এই টিকেট রিডিম করতে, একটি কাস্টমার তাদের আর্কেড কার্ড ডেস্কে স্ক্যান করবে, যেটি তাদের নামের প্রথম লেটার চেক করার একটি প্রোগ্রাম রান করে।
এখানে কাস্টমারের নামের প্রথম লেটার J-এর সমান কিনা চেক করার কোড:
customer_name = "John Milton"
print(customer_name.startswith("J"))
আমাদের কোড রিটার্ন করে: True। কোডের প্রথম লাইনে, আমরা customer_name নামক একটি ভেরিয়েবল ডিফাইন করি যেটি আমাদের কাস্টমারের নাম সংরক্ষণ করে। তারপর, startswith() ব্যবহার করে চেক করি customer_name ভেরিয়েবলটি J দিয়ে শুরু হয় কিনা। এই কেসে, আমাদের কাস্টমারের নাম J দিয়ে শুরু হয়, তাই আমাদের প্রোগ্রাম True রিটার্ন করে।
আপনি যদি start_pos বা end_pos আর্গুমেন্ট স্পেসিফাই না করেন, তবে startswith() শুধু স্ট্রিং-এর শুরুতে আপনার স্পেসিফাই করা সাবস্ট্রিং খুঁজবে।
এখন, ধরি আমরা আমাদের প্রোমোশন চেঞ্জ করছি এবং শুধু যেসব কাস্টমারের পূর্ণ নামের দ্বিতীয় এবং পঞ্চম লেটারের মাঝপথে s থাকে, শুধু তারা যোগ্য। আমরা চেক করতে পারি একটি কাস্টমারের পূর্ণ নাম তাদের পূর্ণ নামের দ্বিতীয় এবং পঞ্চম লেটারের মাঝপথে s ধারণ করে কিনা এই কোড ব্যবহার করে:
customer_name = "John Milton"
print(customer_name.startswith("s", 1, 5))
আমাদের কোড রিটার্ন করে: False। আমাদের কোডে, আমরা উভয় start_pos এবং end_pos প্যারামিটার স্পেসিফাই করেছি, যেগুলো যথাক্রমে ১ এবং ৫ সেট করা হয়েছে। এটি startswith()-কে শুধু আমাদের স্ট্রিং-এর দ্বিতীয় এবং পঞ্চম ক্যারেক্টারের মাঝপথে (যেসব ক্যারেক্টারের ইন্ডেক্স ভ্যালু ১ এবং ৫ এর মাঝপথে) লেটার s সার্চ করতে বলে।
পাইথন Endswith
endswith() স্ট্রিং ফরম্যাটিং মেথডটি ব্যবহার করা যায় চেক করতে একটি স্ট্রিং নির্দিষ্ট ভ্যালু দিয়ে শেষ হয় কিনা। endswith() startswith() মেথডের মতোই কাজ করে, কিন্তু স্ট্রিং-এর শুরুতে সাবস্ট্রিং সার্চ করার বদলে, এটি শেষে সার্চ করে।
endswith() মেথডের সিনট্যাক্স:
string_name.endswith(substring, start_pos, end_pos)
এই প্যারামিটার들의 ডেফিনিশন startswith() মেথডের সাথে ব্যবহৃত موارد들과 একই।
চলুন একটি উদাহরণ এক্সপ্লোর করি যাতে দেখতে পাই endswith() মেথড পাইথনে কীভাবে ব্যবহার করা যায়। ধরুন আমরা একটি এয়ারলাইন চালাচ্ছি এবং আমরা একটি কাস্টমারের ক্রেডিট কার্ডে রিফান্ড প্রসেস করতে চাই। এতে করতে, আমাদের তাদের কার্ড নম্বরের লাস্ট চার ডিজিট জানতে হবে যাতে আমরা আমাদের ফাইলে থাকা একটা সাথে তা মিলিয়ে চেক করতে পারি।
এখানে endswith() ব্যবহার করে চেক করার উদাহরণ দেওয়া হলো কাস্টমার দিয়ে দেয়া চার ডিজিট ফাইলে থাকা ডিজিটের সাথে মিলে কিনা:
on_file_credit_card = '4242 4242 4242 4242'
matches = on_file_credit_card.endswith('4242')
print(matches)
আমাদের প্রোগ্রাম রিটার্ন করে: True। এই কেসে, আমাদের কাস্টমার আমাদেরকে ডিজিট 4242 দিয়েছিল। আমরা endswith() মেথড ব্যবহার করেছি ভেরিফাই করতে যে সেগুলো ফাইলে থাকা নম্বরগুলো সাথে মিলে কিনা। এই কেসে, ফাইলে থাকা ক্রেডিট কার্ড 4242 দিয়ে শেষ হয়, তাই আমাদের প্রোগ্রাম True রিটার্ন করল।
আমরা অপশনাল start_pos এবং end_pos আর্গুমেন্টও ব্যবহার করতে পারি একটি নির্দিষ্ট ইন্ডেক্স পজিশনে সাবস্ট্রিং সার্চ করতে।
ধরি আমরা একটি ক্যাফে অপারেট করছি এবং আমাদের কাছে একটি স্ট্রিং আছে যেটি একটি কাস্টমার যা অর্ডার করেছে সেটি সংরক্ষণ করে। আমাদের শেফ জানতে চান অর্ডারটি Ham Sandwich ধারণ করে কিনা, এবং জানেন আমাদের স্ট্রিংর লেন্থ ২৪। আমাদের স্ট্রিংর লাস্ট পাঁচ ক্যারেক্টার ORDER ধারণ করে। তাই, আমরা আমাদের স্ট্রিংর প্রথম পাঁচ ক্যারেক্টার স্কিপ করতে চাই।
এই সার্চটি আমরা নিচের কোড ব্যবহার করে পারফর্ম করতে পারি:
order = "ORDER Latte Ham Sandwich"
includes_ham_sandwich = order.endswith("Ham Sandwich", 0, 19)
print(includes_ham_sandwich)
আমাদের কোড রিটার্ন করে: True।
আমাদের উদাহরণে, আমরা Ham Sandwich সাবস্ট্রিং প্যারামিটার হিসেবে স্পেসিফাই করেছি।
তারপর, আমরা 0 start_pos প্যারামিটার হিসেবে স্পেসিফাই করেছি কারণ আমরা end_pos প্যারামিটার ব্যবহার করব এবং start_pos খালি রাখা যাবে না যখন আমরা end_pos ব্যবহার করি। আমরা ১৯ আমাদের end_pos আর্গুমেন্ট হিসেবে স্পেসিফাই করেছি কারণ আমাদের স্ট্রিংর লাস্ট পাঁচ ক্যারেক্টার ORDER, এবং তার আগের ক্যারেক্টারটি একটি হোয়াইটস্পেস।
আমাদের স্ট্রিং Ham Sandwich দিয়ে শেষ হয়, তাই আমাদের প্রোগ্রাম True রিটার্ন করল। যদি আমাদের স্ট্রিং Ham Sandwich দিয়ে শেষ না হত, তবে সাফিক্স অন্যথায় False রিটার্ন করত।
লিস্টের সাথে পাইথন Endswith
অতিরিক্তভাবে, endswith() একটি লিস্ট বা টাপল নিতে পারে substring আর্গুমেন্ট হিসেবে, যা আপনাকে চেক করতে দেয় একটি স্ট্রিং একাধিক স্ট্রিংর যেকোনো একটি দিয়ে শেষ হয় কিনা। ধরুন আমরা একটি প্রোগ্রাম তৈরি করছি যা চেক করছে একটি ফাইল নেম .mp3 বা .mp4 দিয়ে শেষ হয় কিনা। আমরা এই চেকটি নিচের কোড ব্যবহার করে পারফর্ম করতে পারি:
potential_extensions = ['.mp3', '.mp4'] file_name = 'music.mp3' print(file_name.endswith(potential_extensions))
আমাদের কোড রিটার্ন করে: True। এই উদাহরণে, আমরা potential_extensions নামে একটি অ্যারে তৈরি করেছি যেটি ফাইল এক্সটেনশনের একটি লিস্ট সংরক্ষণ করে। তারপর, আমরা file_name নামে একটি ভেরিয়েবল ডিক্লেয়ার করেছি যেটি ফাইলের নাম সংরক্ষণ করে যার এক্সটেনশন আমরা চেক করতে চাই।
অবশেষে, আমরা endswith() মেথড ব্যবহার করি চেক করতে আমাদের স্ট্রিং আমাদের potential_extensions লিস্টে থাকা যেকোনো এক্সটেনশন দিয়ে শেষ হয় কিনা। এই কেসে, আমাদের ফাইল নেম .mp3 দিয়ে শেষ হয়, যেটি আমাদের potential_extensions লিস্টে লিস্টেড, তাই আমাদের প্রোগ্রাম True রিটার্ন করল।
উপসংহার
startswith() এবং endswith() মেথডগুলো ব্যবহার করা যায় চেক করতে একটি পাইথন স্ট্রিং নির্দিষ্ট সাবস্ট্রিং দিয়ে শুরু হয় কিনা বা শেষ হয় কিনা, যথাক্রমে। প্রতিটি মেথডে অপশনাল প্যারামিটার আছে যা আপনাকে স্পেসিফাই করতে দেয় স্ট্রিং-এর ভিতরে সার্চ কোথায় শুরু এবং কোথায় শেষ হবে।
এই টিউটোরিয়ালে আলোচনা করা হয়েছে কীভাবে startswith() এবং endswith() মেথড দুটোই ব্যবহার করতে হয়, এবং প্রতিটি মেথড একশনে কয়েকটি উদাহরণ এক্সপ্লোর করা হয়েছে। এখন আপনি startswith() এবং endswith() মেথড ব্যবহার করে স্ট্রিং সাবস্ট্রিং দিয়ে শুরু হয় কিনা বা শেষ হয় কিনা চেক করতে এক্সপার্টের মতো রেডি!