Learn it.Share it.

৭।পাইথন স্ট্রিং - প্রথম অংশ

12:18 AM 0 Comments



পাইথনের একটি গুরুত্বপূর্ণ ডেটা টাইপ হল স্ট্রিং। অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজের মতই পাইথনেও স্ট্রিং গঠিত হয় বিভিন্ন টেক্সট ক্যারেক্টার নিয়ে। যেমনঃ

                     * যেকোন একটি অক্ষর বা ক্যারেক্টার (a,b,c,d,x, y,z,1,2,3) স্ট্রিং হতে পারে,
                     * আবার এক বা একাধিক বাক্য বা লাইন নিয়ে (Hello world! ) স্ট্রিং হয়।
                   

বাংলা ভাষার বর্ণ, শব্দ, বাক্য - সমস্ত কিছুকে একত্রে প্রোগ্রামিং এ বলা হয় স্ট্রিং বা স্ট্রিং ভ্যালু। যেমন আমরা যেকোন সংখ্যাকে নাম্বার বলি ঠিক তেমনি প্রোগ্রামিং এ যেকোন টেক্সটকে বলব স্ট্রিং। স্ট্রিং ভ্যালুকে প্রকাশ করা হয় উদ্ধৃতি চিহ্নের মাধ্যমে ("string"/ 'string') ।
 প্রথমে IDLE তে  'Hello Bangladesh' নামে একটি স্ট্রিং লিখলাম (pic-1) ।

pic-1

এখন এন্টার চাপব-


pic-2
পাইথন সাথে সাথে নীল রঙের স্ট্রিং ভ্যালুকে উপস্থাপন করল (pic-2) ।

আরেকটি কোড লিখি -


pic-3


এখানে (pic-3) ডাবল কোটেশন দিয়ে স্ট্রিংকে প্রকাশ করলাম।কিন্তু পাইথন রিটার্ন করল সিঙ্গেল কোটেশনের মাধ্যমে। অর্থাৎ স্ট্রিং এর ইনপুট ভ্যালু যে কোটেশনের মধ্যেই হোক না কেন, আউটপুট ভ্যালু সবসময় হবে সিঙ্গেল কোটেশনের মধ্যে হবে।

পাইথনে যেকোন ক্যারেক্টারকে উদ্ধৃতি চিহ্নের (single/double quotes) মাধ্যমে প্রকাশ করা হলেই তা স্ট্রিং ভ্যালু হিসেবে বিবেচিত হয়। অর্থাৎ আমি যদি কোন সংখ্যাকে উদ্ধৃতি চিহ্নের মাধ্যমে প্রকাশ করি তবে তাও স্ট্রিং হয়ে যাবে।

pic-4
      
এখানে (pic-4) সংখ্যাকে কোটেশনের মাধ্যমে প্রকাশ করায়, পাইথন একে স্ট্রিং ভ্যালু হিসেবেই রিটার্ন করেছে।

           পাইথনে স্ট্রিং কে প্রকাশ করার জন্য তিন ধরণের উদ্ধৃতি চিহ্ন(quotation marks) ব্যবহার করা হয় - 
    ১। সিঙ্গেল কোটেশন  ( ' ' ) =>  pic-2 এর উদাহরণ

    ২। ডাবল কোটেশন ( " " ) = > pic-3 এর উদাহরণ

    ৩। ট্রিপল কোটেশন (""") =>

কোন বড় টেক্সট যেভাবে লিখা হয়েছে, ঠিক সেভাবে প্রোগ্রামে আনতে চাইলে ট্রিপল কোটেশন ব্যবহার করতে হবে। তবে এক্ষেত্রে স্ট্রিং কে প্রিন্ট ফাংশনের মাধ্যমে প্রকাশ করতে হবে।

pic-5

          এখানে ট্রিপল কোটেশনের মাধ্যমে প্রোগ্রাম লিখলাম।প্রিন্ট ফাংশনের মাধ্যমে প্রোগ্রামকে কল করতে হবে তারপর এন্টার চাপতে হবে -

     এখানে যদি ট্রিপল কোটেশন ব্যবহার করা না হত, তবে সব লাইন এক সাথে চলে আসতো।

পাইথনে স্ট্রিং ভ্যালুর সাথে অবশ্যই সিঙ্গেল কোটেশন বা ডাবল কোটেশন ব্যবহার করতে হবে।
অনেক সময় বাক্য বা টেক্সটে সিঙ্গেল কোটেশন বা 'aspostrophe'(') চিহ্ন ব্যবহারের প্রয়োজন হতে পারে সেক্ষেত্রে স্ট্রিংকে ডাবল কোটেশনের মাধ্যমে প্রকাশ করতে হবে।যেমনঃ
                   


লক্ষণীয়ঃ স্ট্রিং ভ্যালুকে সরাসরি বা ভেরিয়েবলের মাধ্যমে কল করলে উদ্ধৃতি চিহ্ন রয়ে যায়। কিন্তু প্রিন্ট ফাংশনের মাধ্যমে উপস্থাপন করলে উদ্ধৃতি চিহ্ন চলে যায়।যেমন -



স্ট্রিং এর বিভিন্নও ব্যবহারঃ 

  1. Concatenation:
      দুইটি string কে সংযুক্ত করার পদ্ধতি হচ্ছে  String Concatenation। এ জন্য (+) operator ব্যবহার করা হয়।
দুইটি স্ট্রিং ভ্যালুকে সংযুক্ত করার নিয়মঃ
       প্রথমে আলাদা আলাদ দুইটি স্ট্রিং ভ্যালু নিব, তারপর এদের Concatenation operator এর মাধ্যমে সংযুক্ত করব।



    এখানে 'Bangla'  ও 'desh'  নামে দুইটি আলাদা স্ট্রিং ভ্যালু নিলাম। Enter চাপি।






 এটাই Concatenation। বাংলায় সন্ধি বিচ্ছেদকেই বলা যায় প্রোগ্রামিং এর Concatenation ।

 সংখ্যা ও স্ট্রিংকে এক সাথে Concatenation operator এর মাধ্যমে সংযুক্ত করা যায় না ।


এখানে সংখ্যা ও স্ট্রিং কে একত্রে যুক্ত করতে যাওয়াতে Error চলে আসছে।

এক্ষেত্রে সংখ্যাকে আগে স্ট্রিং এ রূপান্তর করে নিতে হবে।
এখানে str হল string এর সংক্ষিপ্ত রূপ। str () পাইথনের একটি বিল্ট ইন ফাংশন। এর মাধ্যমে ইন্টিজার বা সংখ্যাকে স্ট্রিং ভ্যালুতে রুপান্তর করা হয়।
আবার সংখ্যাকে উদ্ধৃতি চিহ্নের মাধ্যমে প্রকাশ করেও Concatenation করা যায় -
           

আবার দুইটি স্ট্রিং ভ্যালুকে শুধু উদ্ধৃতি চিহ্নের মাধ্যমে সরাসরি সংযুক্ত করা যায় (Concatenation operator ছাড়াই)। যেমনঃ


তবে ভেরিয়েবল এর ক্ষেত্রে এই নিয়ম কাজ করে না।

দুইটি স্ট্রিং এর মধ্যে স্পেস আনার নিয়মঃ
স্পেস আনার জন্য যেকোন একটি স্ট্রিং ভ্যালুর উদ্ধৃতি চিহ্নের মাঝখানে স্পেস রাখলেই হবে।



2.String Repetition:

একই স্ট্রিং ভ্যালুর অনেকগুলো কপি পাওয়ার জন্য Repetition Operator (*) ব্যবহার করা হয়।
এক্ষেত্রে Repetition Operator (*) এর আগে কত বার পুনরাবৃত্তি হবে তার সংখ্যা দিয়ে দিতে হবে।


স্পেস পাওয়ার জন্য আগের মতই স্ট্রিং ভ্যালুর উদ্ধৃতি চিহ্নের মাঝখানে স্পেস রাখতে হবে। 


3.Membership Operator:

Sequencial Data type এর ক্ষেত্রে Membership (সদস্য) পরীক্ষা করার জন্য in এবং not in অপারেটর ব্যবহার করা হয়। মানে কেউ কোন নির্দিষ্ট গ্রুপের সদস্য কিনা তা বের করা।
যদি কোন একটি ক্যারেক্টার কোন নির্দিষ্ট স্ট্রিং এর অন্তর্ভুক্ত হয় তবে রিটার্ন আসবে "True"।
আর যদি অন্তর্ভুক্ত না হয় তবে রিটার্ন আসবে "False"।

একদম সবার উপরের উদাহরণে  "f in flower" এ "f" অক্ষরটি "flower" স্ট্রিং ভ্যালুর মধ্যে আছে কিনা, তাই পাইথনের কাছে জানতে চাওয়া হল। "f" অক্ষরটি "flower" স্ট্রিং ভ্যালুর মধ্যে আছে বলেই রিটার্ন ভ্যালু হল "True"।
in অপারেটরের এর ঠিক বিপরীত ফলাফল দেয় not in অপারেটর।

(Membership অপারেটর সম্পর্কে আরও তথ্য দেয়া আছে, পাইথন ডকুমেন্টেশনের "The Python Language Reference" => "Expressions"=>  Primaries => Comparisons অংশে।) 

4.Escape Character:

প্রোগ্রামিং এ ব্যাকস্লেসকে ( / ) বলা হয় Escape Character যা প্রিন্ট ফাংশনের মাধ্যমে কাজ করে।
স্ট্রিং ভ্যালুতে যখন ব্যাকস্লেস ব্যবহার করা হয়, তখন প্রোগ্রাম ব্যাকস্লেসের পরের ক্যারেকটার নিয়ে একটি সিকুয়েন্স তৈরি করে যাকে বলে Escape Sequence।


Python:Escape Sequence
পাইথনে স্ট্রিং ভ্যালুতে বিভিন্ন ধরণের Escape Sequence এর ব্যবহার আছে। যেমনঃ
* নতুন লাইন তৈরির জন্য ব্যবহার হয় - \n
    
Python 2:Escape Sequence-Newline

* লাইনে ব্যাকস্লেস আনার জন্য ব্যবহার করা হয় - \\

Python 2:Escape Sequence:Backslash

* লাইনে সিঙ্গেল কোটেশন আনার জন্য ব্যবহার করা হয় - \'

Python 2:Escape Sequence- single quotation

* লাইনে ডাবল কোটেশন আনার জন্য ব্যবহার করা হয় - \ "

Python 2:Escape Sequence- Double quotation

 5.Raw String:

  Escape Sequence এ কিছু কিছু ক্যারেক্টার আছে যাদের নিয়ে পাইথনে কাজ করতে গেলে সমস্যায় পরতে হয়।
  আমরা জানি, \n  একটি Escape Sequence এর একটি কোড যা প্রোগ্রামে নতুন লাইন তৈরি ক্ষেত্রে ব্যবহার করা হয়। যেমনঃ



এখন "serial no\name\address" - এই স্ট্রিং ভ্যালুগুলোকে প্রোগ্রাম আনতে চাই এবং এও চাই যে যেভাবে লিখেছি ঠিক সেভাবেই যেন বাক্যটি আসে অর্থাৎ প্রতিটি স্ট্রিং ভ্যালুর মাঝখানে ব্যাকস্লেস থাকুক।
কোড লিখলাম।
 এন্টার চাপি।


 

কিন্তু যেভাবে চাইলাম সেভাবে তো আসলইনা বরং আরেকটি লাইনে প্রোগ্রাম চলে গেল।কখনও  কখনও ব্যাকস্লেস ব্যবহারের প্রয়োজন হতে পারে আর যার সাথে n শব্দটি চলে আসতে পারে । কিন্তু তখন যদি প্রোগ্রাম ঠিক ভাবে কাজ না করে, তখন কি করব ? 

 এধরণের সমস্যা এড়ানোর জন্য ব্যবহার করা হয় "Raw String" যাকে প্রকাশ করা হয় "r" দিয়ে (Raw থেকে r )। স্ট্রিং ভ্যালুতে যে উদ্ধৃতি চিহ্ন ব্যবহার করা হয় তার আগে বসাতে হয় "r" ।

এখানে উদ্ধৃতি চিহ্নের আগে "r" অক্ষরটি বসান হয়েছে। এবার এন্টার চাপি



 এখন প্রোগ্রামে "Raw String" আনাতে ঠিক ঠিক ভাবেই ব্যাকস্লেশগুলো প্রোগ্রামে চলে আসলো।

*** যদি শুধু \n কে স্ট্রিং হিসেবে প্রিন্ট করতে চাই

এন্টার চাপি


 এখানে কিছুই হল, শুধু নতুন একটি খালি লাইন তৈরি হয়ে গেল । Raw String ব্যবহার করি।


***  আবার যদি কখন প্রোগ্রামে double backslash এর প্রয়োজন পরে, তাহলে


কিন্তু Raw String ব্যবহার করে।


পাইথনে Regular Expression নামে এক বিশেষ ধরণের সিকুয়েন্স আছে যা অ্যাডভানস পাইথনের বিষয়, যা কিনা সার্চ এর ক্ষেত্রে ব্যবহার করা হয়। এই Regular Expression এর ক্ষেত্রে Raw String এর প্রয়োজন পরে।