# স্ট্রিং অপারেশনস ### সিঙ্গল কোট, ডাবল কোট ও এস্কেইপ ক্যারেক্টার পাইথনে সিঙ্গল বা ডাবল কোটেশন দুটোর মাধ্যমেই স্ট্রিং ডিফাইন করা যায় । তবে যেটি দিয়ে স্ট্রিং শুরু করবেন, শেষও করতে হবে সেটি দিয়েই । এক ধরণের কোটেশনের মধ্যে অন্য কোটেশন সরাসরি প্রিন্ট হয়ে যাবে । যে কোটেশন দিয়ে স্ট্রিং ব্যবহার করা হচ্ছে তার ভিতরে যদি ঐ কোটেশন চিহ্নটি কোন কারণে ব্যবহার করতে হয় তবে তার আগে একটি ব্যাক স্ল্যাশ ব্যবহার করতে হয় । আমরা কিছু উদাহরণ দেখি: ```python print "double quotation" print 'here is the single' print "single quote - ' in a double quoted string" print 'double quotes - " in a single quoted string' print "here comes the escaped quotes - \" " print 'here is the single one - \' ' ``` একটি ফাইলে এই কোড টাইপ করে রান করে দেখুন কি আউটপুট দেখায় । এখানে ব্যাকস্ল্যাশ ব্যবহার করে আমরা কোট টাকে এড়িয়ে যেতে পারি তাই এটাকে (`\`) পাইথনে এস্কেইপ ক্যারেক্টার বলা হয় । সিঙ্গল কোট বা ডাবল কোট ব্যবহার করে মাল্টিলাইন স্ট্রিং করা একটু জটিল। কারন তখন আমাদের নিউলাইন এস্কেইপ করতে হয় । তাই মাল্টিলাইন স্ট্রিং এর জন্য সিঙ্গল কোট বা ডাবল কোট ব্যবহার করতে চাইলে আমরা `+` ব্যবহার করে একাধিক লাইন যোগ করে নিতে পারি অথবা নিচের সিনট্যাক্স ব্যবহার করতে পারি । ### মল্টিলাইন স্ট্রিং এই বিশেষ সিনট্যাক্সটি ব্যবহার করে আমরা পাইথনে সহজেই মাল্টিলাইন স্ট্রিং তৈরি করতে পারি । ```python rochona = """The cow is a domestic animal. It has four legs and a long tail and We have a cow.""" print rochona ``` ### প্রিন্টিং পাইথনে আমরা কোন আউটপুট দেখাতে চাইলে প্রিন্ট স্টেটমেন্টটি ব্যবহার করে থাকি । উদাহরন: ```python print "Hello world!" ``` ### লিস্ট হিসেবে ক্যারেক্টার এ্যাক্সেস পাইথনে স্ট্রিং হলো ক্যারেক্টারের লিস্ট । তাই আমরা লিস্ট এ্যাক্সেস সিনট্যাক্স ব্যবহার করে যে কোন পজিশনে থাকা ক্যারেক্টার এ্যাক্সেস করতে পারি । ```python my_string = "Hello Python" print my_string[2] ``` ### স্ট্রিং লেন্থ যেহেতু স্ট্রিংও এক ধরনের বিশেষ লিস্ট, তাই এর লেন্থও একই ভাবে বের করা যায়। আমরা যদি my_string স্ট্রিংটির লেন্থ বের করতে চাই তাহলে নিচের মত করে `len()` ফাংশনটি ব্যবহার করবো: ```python print len(my_string) ``` ### আপার কেইস ও লোয়ার কেইস টপিকের নাম শুনেই বুঝতে পারছেন এই সেকশনে আমরা কি নিয়ে আলোচনা করবো । ```python big = "AAA" print big.lower() small = "aaa" print small.upper() ``` সব পাইথন স্ট্রিং অবজেক্ট এর - `upper()` এবং `lower()` নামে দুটি মেথড থাকে । এদের কল করে আমরা ঐ স্ট্রিংকে আপার কেইস বা লোয়ার কেইসে কনভার্ট করতে পারি । ### ফরম্যাটেড স্ট্রিং ধরুন আমাদের ৩টি ভ্যারিয়েবল আছে - ```python name = "masnun" age = 24 email = "masnun@transcendio.net" ``` এখন যদি আমরা এই তিনটি ভ্যারিয়েবল দিয়ে একটি অর্থবহ বাক্য প্রিন্ট করতে চাই, তাহলে আমাদের এরকম কিছু করতে হবে: ```python print "My name is " + name + ". I am " + str(age) + " years old. You can reach me via email - " + email ``` দেখুন, এখানে আমরা অনেকগুলো ভ্যারিয়েবল যোগ করেছি একটা একটা করে । ভ্যারিয়েবল এর সংখ্যা বাড়লে কোড এর অবস্থা আরো অগোছালো হয়ে যাবে । তাছাড়া দেখুন `age` এর টাইপ স্ট্রিং না হওয়ায় এটাকে জোর করে স্ট্রিং করার প্রয়োজন হয়েছে। এই ঝামেলাপূর্ন ফরম্যাটিং এর কাজটাই আমরা খুব সহজে করতে পারি একটু অন্যভাবে । এক্ষেত্রে আমরা ঐ স্ট্রিংটিতে কিছু প্লেসহোল্ডার রাখবো, এবং পরে এই প্লেস হোল্ডার গুলোর স্থানে ভ্যারিয়েবলগুলোর ভ্যালু বসিয়ে প্রিন্ট করবো । উদাহরন দেখি: ``` python print "My name is %s, I am %d years old and my email address is %s " % (name, age, email) ``` এখানে `%s` দিয়ে বোঝানো হয় যে এই জায়গাটায় একটা স্ট্রিং ভ্যালু বসবে, `%d` এর স্থানে ইন্টিজার । স্ট্রিং টি সম্পূর্ণ হওয়ার পর `%` এর পর আমাদের ভ্যারিয়েবল গুলো একটি টাপল এর মধ্যে পাস করে দিলেই হলো । ### স্পেশাল ক্যারেক্টার এবং এস্কেইপ সিকুয়েন্স স্ট্রিং এর ভিতরে আমরা বিশেষ কিছু ক্যারেক্টার ব্যবহার করতে পারি যেগুলো একটু ভিন্ন ধরনের । যেমন আমরা যদি নতুন লাইন তৈরি করতে চাই সেক্ষেত্রে আমরা নিউলাইন ক্যারেক্টার টি ব্যবহার করতে পারি - ```python print "Hello\nWorld!" ``` এখানে `\n` টি নিউলাইন ক্যারেক্টার । এমনি ভাবে `\t` দিয়ে নিউ ট্যাব ব্যবহার করা যায় । বিভিন্ন অপারেটিং সিস্টেমে এধরনের কিছু স্পেশাল ক্যারেক্টার থাকে যা আমরা সরাসরি পাইথন স্ট্রিং এ ব্যবহার করতে পারি । এখানে লক্ষ্য করুন দুটি স্পেশাল ক্যারেক্টারের আগেই `\` বিদ্যমান । আমরা আগেই দেখেছি, এটি হচ্ছে পাইথনে এস্কেইপ ক্যারেক্টার । এস্কেইপ ক্যারেক্টারের পর এক বা একাধিক ক্যারেক্টার বসিয়ে আমরা যে এস্কেইপ সিকুয়েন্স পাই । কিছু প্রচলিত এস্কেইপ সিকুয়েন্স নিচে দেওয়া হলো -
সিকুয়েন্স পরিচিতি
\\ একটা ব্যাকস্ল্যাশ
\' সিঙ্গল কোট (')
\" ডাবল কোট (")
\a বেল
\b ব্যাকস্পেইস
\f ফর্মফিড
\n লাইন ব্রেক
\N{name} ইউনিকোড ক্যারেক্টার এর নাম
\r ASCII ক্যারিজ রিটার্ন (ম্যাক ওস এক্স এ নিউ লাইন ক্যারেক্টার)
\t ট্যাব
\uxxxx ১৬ বিট হেক্সাডেসিম্যাল ভ্যালু সম্বলিত ইউনিকোড ক্যারেক্টার
\Uxxxxxxxx ৩২ বিট হেক্সাডেসিম্যাল ভ্যালু বিশিষ্ট ইউনিকোড ক্যারেক্টার
\v ভার্টিক্যাল ট্যাব
\ooo `ooo` অক্টাল ভ্যালু বিশিষ্ট ক্যারেক্টার
\xhh `hh` হেক্সাডেসিম্যাল ভ্যালুওয়ালা ক্যারেক্টার
(এই টেবিল টি জেড শ এর লার্ন পাইথন দ্যা হার্ড ওয়ে বইটি থেকে অনুবাদকৃত)