আজকে আমরা পাইথনের একটি অত্যন্ত গুরুত্বপূর্ণ ডেটা – টাইপ, String নিয়ে বিশদে আলোচনা করব। এই পোস্টে আমরা জানব স্ট্রিং কি ,স্ট্রিং এর মেথডগুলি এবং পাইথনে এটি কে কিভাবে ব্যবহার করব ?
Table of Contents
Definition of String in Python
আজকে আমরা পাইথনের একটি গুরুত্বপূর্ণ ডেটা টাইপ স্ট্রিং সম্পর্কে জানব। পাইথনে স্ট্রিং হল এক বা একাধিক character এর সিকোয়েন্স। যেখানে একটি character হলো – একটা letter , digit , space অথবা কোন symbol।
পাইথনে , আমরা স্ট্রিংকে সিঙ্গেল ( ‘ ), ডবল ( ” ) অথবা ট্রিপল ( ‘ ‘ ‘ ) কোটেশন দ্বারা সীমাবদ্ধ অক্ষরের সিরিজ হিসেবে বিবেচনা করতে পারি। পাইথনে স্ট্রিং হল immutable ডেটা টাইপ অর্থাৎ একবার স্ট্রিং তৈরি হয়ে গেলে আমরা তাকে কোনভাবেই পরিবর্তন করতে পারি না।পাইথনের str নামক একটা built-in স্ট্রিং ক্লাস রয়েছে।
পাইথনে আমরা স্ট্রিং এক্সেস করার জন্য ইনডেক্স ব্যবহার করি। string এ প্রত্যেকটি element কে এক একটি জায়গা দেওয়া হয়। যেই জায়গার প্রত্যেকটি ইউনিক নাম্বার থাকে যাকে বলি ইনডেক্স বা পজিশান (Index)।
পাইথনে দুই ধরনের ইনডেক্স আছে –
- পজেটিভ ইনডেক্স ( positive index ) : পাইথনে ইনডেক্স/পজেটিভ ইনডেক্স 0 থেকে শুরু হয় এবং +1 করে বাড়তে থাকে। অর্থাৎ : 0, 1, 2, 3,……..
- নেগেটিভ ইনডেক্স ( negative index ) : পাইথনে নেগেটিভ ইনডেক্স -1 থেকে শুরু হয় এবং -1 করে কমতে থাকে। অর্থাৎ : -1, -2, -3,……..
Also Read :- What is List in Python | Learn in Easy Bengali 2024
Strings are immutable in Python
পাইথনে স্ট্রিং হল immutable ডেটা-টাইপ,যেটার মানে আমরা স্ট্রিংকে একবার create করলে সেটিকে আর চেঞ্জ করতে পারব না। যখনই আমরা একটা তৈরি করা( existing ) স্ট্রিংকে পরিবর্তন করতে যাব, তখনই নতুন আরেকটা স্ট্রিং তৈরি হবে।
পাইথনে প্রত্যেকটি অবজেক্ট আমাদের কম্পিউটার মেমরিতে স্টোর হয়। এখন আমরা id ( ) ফাংশানের সাহায্যে সেই অবজেক্টের মেমোরি এড্রেস দেখতে পারবো।
প্রথমে , আমরা একটা স্ট্রিং ভেরিয়েবল mystr ডিক্লেয়ার করি এবং তার মধ্যে ভ্যালু হিসেবে hello অ্যাসাইন করি , এরপর আমরা এই স্ট্রিং ভেরিয়েবল টা আমাদের মেমোরির কোথায় স্টোর হয়েছে, সেই অ্যাড্রেসটা দেখার চেষ্টা করি id ( ) ফাংশনের সাহায্যে।
mystr='hello'
print('the value of mystr: ',mystr,' || address: ',id(mystr))
Pythonthe value of mystr: hello || address: 140116953000240
এইবার আমরা দেখি , যদি আমরা আমাদের তৈরি করা mystr ভ্যারিয়েবল টিতে কিছু নতুন ভ্যালু যুক্ত করতে চাই তাহলে সেটি যুক্ত হয় কিনা ? এবং যুক্ত করার পর তার মেমোরি অ্যাড্রেসটা একই থাকে কিনা ? যদি একই থাকে তাহলে বুঝবো স্ট্রিং mutable ডেটা টাইপ কিন্তু যদি মেমোরি অ্যাড্রেসটা আলাদা হয় তাহলে আমরা বুঝবো স্ট্রিং immutable ডেটা টাইপ।
mystr='hello'
print('before modification the value of mystr: ',mystr,' || address: ',id(mystr))
mystr=mystr+'world'
print('after modification the value of mystr: ',mystr,' || address: ',id(mystr))
Pythonbefore modification the value of mystr: hello || address: 140116953000240
after modification the value of mystr: helloworld || address: 140116953000368
উপরের আউটপুট টা থেকে আমরা দেখতেই পাচ্ছি আমরা আগে যে মেমোরি অ্যাড্রেসটা পেয়েছিলাম এবং এখন যে মেমোরি এড্রেসটা পেলাম দুটো সম্পূর্ণ আলাদা। অর্থাৎ নতুন ভ্যালু mystr এ যুক্ত করার পর এটি আলাদা একটা স্ট্রিং ভেরিয়েবল এ পরিণত হয়েছে যার মেমোরি অ্যাড্রেস আগের mystr থেকে আলাদা। অর্থাৎ স্ট্রিং একটি immutable ডেটা-টাইপ।
শুধু তাই নয় আমরা স্ট্রিং এর কোন chracter কে update ,delete করতে পারবো না।
Also Read :- Basic List Operations and List methods in Easy Bengali 2024
Creating a String in Python
আমরা একটি স্ট্রিং কে দুইভাবে তৈরি করতে পারি।
Normal way
পাইথনে , আমরা সিঙ্গেল ( ‘ ), ডবল ( ” ) অথবা ট্রিপল ( ‘ ‘ ‘ ) কোটেশন দিয়ে স্ট্রিংকে তৈরি করতে পারি।
Example
empty_string='' # creating empty string
string1='welcome to techinbengali.com' # single quote ( ' )
string2="welcome to techinbengali.com" # double quote ( " )
string3='''welcome to techinbengali.com''' # triple quote ( ''' )
print(empty_string,type(empty_string))
print(string1,type(string1))
print(string2,type(string2))
print(string3,type(string3))
PythonOutput
<class 'str'>
welcome to techinbengali.com <class 'str'>
welcome to techinbengali.com <class 'str'>
welcome to techinbengali.com <class 'str'>
Using Str ( ) function
পাইথনে আমরা string ( ) ফাংশন ব্যবহার করে একটি স্ট্রিং কে তৈরি করতে পারি।
Example
empty_string=str('')
string1=str('welcome to techinbengali.com')
print(empty_string,type(empty_string))
print(string1,type(string1))
PythonOutput
<class 'str'>
welcome to techinbengali.com <class 'str'>
Also Read :- What are Data Structures in Python in Easy Bengali 2024
difference between single (‘ ‘), double (” “), and triple (”’ ”’ or “”” “””) quotes
Single Quotes ( ‘ ‘ )
single quote ব্যাবহার করে , একটা স্ট্রিং তৈরী করি যেখানে আমরা double quote কে ব্যাবহার করতে পারবো ✅ , কিন্তু single quote কে ব্যাবহার করতে পারবো না❌।
print('This is a string with "double quotes" inside.')
PythonThis is a string with "double quotes" inside.
Double Quotes ( ‘ ‘ )
double quote ব্যাবহার করে , একটা স্ট্রিং তৈরী করি যেখানে আমরা single quote কে ব্যাবহার করতে পারবো ✅ , কিন্তু double quote কে ব্যাবহার করতে পারবো না❌।
print("This is a string with 'single quotes' inside.")
PythonThis is a string with 'single quotes' inside.
Triple Quotes ( ‘ ‘ )
Triple quote ব্যাবহার করে , একটা স্ট্রিং তৈরী করি যেখানে আমরা single quote এবং double quote কে ব্যাবহার করতে পারবো ✅ , কিন্তু Triple quote কে ব্যাবহার করতে পারবো না❌।
print('''This is a multi-line
string with 'single' and "double" quotes inside.''')
print("""This is a multi-line
string with 'single' and "double" quotes inside.""")
PythonThis is a multi-line
string with 'single' and "double" quotes inside.
This is a multi-line
string with 'single' and "double" quotes inside.
Updating a character from a String in Python
আমরা আগেও বলেছি , যেহেতু string একটি immutable ডেটা-টাইপ সেই কারণে , যদি আমরা স্ট্রিং এর কোন character কে পরিবর্তন করার চেষ্টা করি, তাহলে পাইথন আমাদের TypeError নামক একটি error দেবে।
Example
mystr='hello world'
mystr[2]='k'
print(mystr)
PythonOutput
ERROR!
Traceback (most recent call last):
File "<main.py>", line 2, in <module>
TypeError: 'str' object does not support item assignment
Deleting a character from a String in Python
যেহেতু string একটি immutable ডেটা-টাইপ সেই কারণে , যদি আমরা স্ট্রিং এর কোন character কে delete করার চেষ্টা করি , তাহলে পাইথন আমাদের TypeError নামক একটি error দেবে।
Example
mystr='hello world'
del mystr[2]
print(mystr)
PythonOutput
ERROR!
Traceback (most recent call last):
File "<main.py>", line 2, in <module>
TypeError: 'str' object doesn't support item deletion
Concatenating , appending and multiplying String in Python
Concatenating
Concatenating মানে হল , একসাথে জয়েন করা। পাইথনে আমরা দুটো স্ট্রিং কে + অপারেটর ব্যবহার করে concatinate করতে পারি।
Example
mystr='hello'
mystr2=' world'
mystr=mystr+mystr2
print(mystr)
PythonOutput
hello world
appending
appending মানে হল , শেষে কোন কিছু add করা। পাইথনে আমরা একটি স্ট্রিং এর শেষে += অপারেটর ব্যবহার করে অন্য একটি স্ট্রিং কে append করতে পারি।
Example
mystr='hello'
mystr+=', welcome to '
mystr+='techinbengali'
print(mystr)
PythonOutput
hello, welcome to techinbengali
multiplying
Example
multiplying মানে হল , একটি স্ট্রিং কে n টাইম পর্যন্ত রিপিট করা। পাইথনে আমরা একটি স্ট্রিং কে রিপিট করতে * ব্যাবহার করি।
mystr='$'
print(mystr*20)
PythonOutput
$$$$$$$$$$$$$$$$$$$$
Also Read :- What is Tuple in Python in Easy Bengali 2024
The str ( ) function in python
পাইথনে যে কোন ডেটা-টাইপের ভ্যালুকে স্ট্রিং ডেটা-টাইপে কনভার্ট করার জন্য str ( ) ফাংশন ব্যবহার করা হয়। এই ফাংশান টি প্রোগ্রামারদের সাহায্য করে , অন্য ডেটা-টাইপের ভ্যালু কে একটি স্ট্রিং এর সাথে concatinate করতে, অন্যথায় সম্ভব নয়।
এখানে আমাদের অবশ্যই মনে রাখতে হবে যে , concatinate করার সময় দুটিকেই স্ট্রিং হতে হবে। যদি দুটির মধ্যে কোন একটি , অন্য ডেটা-টাইপ হয় তাহলে পাইথন আমাদেরকে TypeError দেবে।
Syntax
str( variable )
নিচের উদাহরণটি লক্ষ্য করুণ –
প্রথম example এ, আমরা একটি নাম্বারের সাথে একটি স্ট্রিং এর concatinate করছি । দুটি ভিন্ন ডেটা-টাইপ হওয়ার কারণে, পাইথন আমাদের TypeError দিয়েছে।
দ্বিতীয় example এ, আমরা একটি নাম্বার কে প্রথমে str ( ) ফাংশনের মাধ্যমে স্ট্রিং এ কনভার্ট করেছি , এরপর ওপর স্ট্রিং এর সাথে concatinate করেছি। দুটি same ডেটা-টাইপ হওয়ার কারণে, পাইথন আমাদের ভ্যালু দুটোকে concatinate করে দিয়েছে।
Example – 1
mystr='hello, '
val=7
mystr=mystr+val
print(mystr)
PythonERROR!
Traceback (most recent call last):
File "<main.py>", line 3, in <module>
TypeError: can only concatenate str (not "int") to str
Example – 2
mystr='hello, '
val= str( 7 )
mystr=mystr+val
print(mystr)
Pythonhello, 7
f – String in Python
পাইথন আমাদেরকে একটি পাওয়ারফুল ফিচারস দিয়েছে যেটির নাম f – strings ( formatted string literals )। যেটির দ্বারা আমরা সহজেই স্ট্রিং formatting এবং interpolation করতে পারি। যদিও এটি পাইথন 3.6 এ প্রথম আসে। এটি দ্বারা আমরা স্ট্রিং এ সরাসরি expression এবং variable কে ব্যবহার করতে পারি।
f-string এর মধ্যে আমরা যে কোনো ভ্যারিয়েবল এর ভ্যালু দেখতে গেলে , ভ্যারিয়েবলটিকে সেকেন্ড ব্র্যাকেটের { varaible_name } মধ্যে লিখবো।
Syntax
f " "
working with f-strings
mystr='hello' # a string variable
number1=5 # a number variable
number2=10 # a number variable
def add_function(a,b): # a function
return a+b
print(f"The value of mystr is: {mystr}")
print(f"The sum of {number1} and {number2} is: {add_function(number1, number2)}")
print(f"Variables: mystr = {mystr}, number1 = {number1}, number2 = {number2}")
PythonThe value of mystr is: hello
The sum of 5 and 10 is: 15
Variables: mystr = hello, number1 = 5, number2 = 10
Also Read :- What is Set in Python | Learn in Easy Bengali 2024
Slice Operation in python
একটি স্ট্রিং এর মধ্যে থেকে আমরা যদি কোন অংশকে কেটে নিই তাহলে তাকেই বলে substring। এবং substring টাকেই slice বলা হয়। স্লাইস অপারেশন দ্বারা আমরা একটি স্ট্রিং থেকে sub-parts তৈরি করতে পারি । আমরা মূলত, slicing অপারেটর [ ] ব্যবহার করে একটি স্ট্রিং থেকে তার sub-string তৈরি করতে পারি।
Slicing অপারেশন করার আগে আমাদের একটি স্ট্রিং এর ইনডেক্স সম্পর্কে ভালোভাবে আইডিয়া রাখতে হবে। আমরা এই চ্যাপ্টারের প্রথমেই ইনডেক্স নিয়ে আলোচনা করেছি।নিচের ছবিটি লক্ষ্য করুন –
slicing অপারেটর [ ] এর মধ্যে তিনটে part আছে।
Start – কোথা থেকে স্ট্রিং টাকে slicing করা হবে ?
Default ভ্যালু 0 অর্থাৎ স্ট্রিং এর একদম প্রথম থেকে।
এছাড়াও আমরা আমাদের ইচ্ছে মত ভ্যালু দিতে পারি।
Stop – শেষ কত অবধি স্ট্রিং টাকে slicing করা হবে ?
Default ভ্যালু ( স্ট্রিং এর length – 1 ) অর্থাৎ স্ট্রিং এর একদম শেষ। এছাড়াও আমরা আমাদের ইচ্ছে মত ভ্যালু দিতে পারি।
Step / Stride – এখানে ( + এবং – ) দুটো ভ্যালু হতে পারে।Default ভ্যালু +1 , অর্থাৎ +1 করে শেষ পর্যন্ত যাবে।
( + ) ভ্যালু হলে স্ট্রিং এর সামনে থেকে শেষের দিকে যাবে। ( – ) ভ্যালু হলে স্ট্রিং এর পিছন থেকে সামনের দিকে যাবে অর্থাৎ reversed অর্ডার।
when stride / step value is +ve
এবার আমরা slicing অপারেশনের কিছু উদাহরণ দেখি ।আমরা একটা mystr নামক স্ট্রিং ভ্যারিয়েবলে python স্ট্রিং কে এসাইন করে slicing অপারেশন করবো।
mystr = 'python'
Example -1
mystr='python'
print(mystr[ : ])
# or
print(mystr[ : : ])
Pythonযেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা নেই তাই আমরা start হিসাবে ইনডেক্স 0 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে +1 ( by default ) করে end হিসাবে স্ট্রিং এর শেষ পর্যন্ত যাবে।সেই কারণে পুরো স্ট্রিং টাই হবে।
python
Example -2
mystr='python'
print(mystr[2:5:1])
Pythonযেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা আছে তাই আমরা start হিসাবে ইনডেক্স 2 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে +1 করে end হিসাবে স্ট্রিং এর ইনডেক্স (5-1)=4 পর্যন্ত যাবে। তাই এখানে 2,3,4 ইনডেক্স পজিশনের ভ্যালু প্রিন্ট হবে।
tho
Example -3
mystr='python'
print(mystr[2:5:2])
Pythonযেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা আছে তাই আমরা start হিসাবে ইনডেক্স 2 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে +2 করে end হিসাবে স্ট্রিং এর ইনডেক্স (5-1)=4 পর্যন্ত যাবে। তাই এখানে 2,4 ইনডেক্স পজিশনের ভ্যালু প্রিন্ট হবে।
to
Other Example
my_string = "Hello, World!"
print("1. Get every character:")
print(my_string[::]) # Output: Hello, World!
print("\n2. Get every second character:")
print(my_string[::2]) # Output: HloWrd
print("\n3. Get every third character starting from index 1:")
print(my_string[1::3]) # Output: eood
print("\n4. Reverse the string:")
print(my_string[::-1]) # Output: !dlroW ,olleH
print("\n5. Get every second character in reverse order:")
print(my_string[::-2]) # Output: !o ,olH
print("\n6. Get every character starting from index 2:")
print(my_string[2::]) # Output: llo, World!
print("\n7. Get every character up to index 5:")
print(my_string[:5:]) # Output: Hello
Pythonwhen stride / step value is -ve
এবার আমরা slicing অপারেশনের কিছু উদাহরণ দেখি ।আমরা একটা mystr নামক স্ট্রিং ভ্যারিয়েবলে python স্ট্রিং কে এসাইন করে slicing অপারেশন করবো।
mystr = 'python'
Example – 1
mystr='python'
print(mystr[ : : -1])
Pythonযেহেতু এখানে slicing অপারেটর এর মধ্যে start , end ভ্যালু বলা নেই কিন্তু যেহেতু step ভ্যালু হিসাবে -1 তাই এখানে নেগেটিভ ইনডেক্স হিসাবে ধরে আমাদের চলতে হবে। start হিসাবে ইনডেক্স -1 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে -1 করে স্ট্রিং এর শেষ পর্যন্ত যাবে।সেই কারণে পুরো স্ট্রিং টাই reverse অর্ডারে প্রিন্ট হবে।
nohtyp
Example – 2
mystr='python'
print(mystr[ -2 : -5 : -1])
Pythonযেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা আছে| কিন্তু যেহেতু step ভ্যালু হিসাবে -1 তাই এখানে নেগেটিভ ইনডেক্স হিসাবে ধরে আমাদের চলতে হবে। start হিসাবে ইনডেক্স -2 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে -1 করে end হিসাবে স্ট্রিং এর ইনডেক্স (-5+1)= -4 পর্যন্ত যাবে।তাই এখানে –2,-3,-4 ইনডেক্স পজিশনের ভ্যালু প্রিন্ট হবে।
oht
Example – 3
mystr='python'
print(mystr[ -2 : -5 : -2])
Pythonযেহেতু এখানে slicing অপারেটর এর মধ্যে start , end এবং step ভ্যালু বলা আছে| কিন্তু যেহেতু step ভ্যালু হিসাবে -1 তাই এখানে নেগেটিভ ইনডেক্স হিসাবে ধরে আমাদের চলতে হবে। start হিসাবে ইনডেক্স -2 থেকে শুরু করবো , এবং step ভ্যালু হিসাবে -2 করে end হিসাবে স্ট্রিং এর ইনডেক্স (-5+1)= -4 পর্যন্ত যাবে।তাই এখানে –2,-4 ইনডেক্স পজিশনের ভ্যালু প্রিন্ট হবে।
ot
Other Example
my_string = "Hello, World!"
print("1. Reverse the string:")
print(my_string[::-1]) # Output: !dlroW ,olleH
print("\n2. Get every second character in reverse order:")
print(my_string[::-2]) # Output: !o ,olH
print("\n3. Get every third character starting from the end:")
print(my_string[::-3]) # Output: !lWol
print("\n4. Get every character except the last one:")
print(my_string[:-1:]) # Output: Hello, World
print("\n5. Get every second character starting from the end:")
print(my_string[::-2]) # Output: !o ,olH
print("\n6. Get every character up to index -5:")
print(my_string[:-5:]) # Output: Hello,
PythonAlso Read :- What is Dictionary in Python | Learn in Easy Bengali 2024
How to Reverse a string in python
আমরা slicing অপারেশনের সাহায্যে একটি স্ট্রিং কে খুব সহজেই reverse করতে পারি।
my_string = "python"
reverse_string=my_string[::-1]
print(reverse_string)
Pythonnohtyp
Basic String Operations in Python (বেসিক স্ট্রিং অপারেশন)
len ( )
এটি স্ট্রিং এর length বা দৈর্ঘ্য রিটার্ন করে।
Example
mystr='hello'
print(len(mystr))
PythonOutput
5
Membership ( in )
এটি দিয়ে আমরা দেখতে পারি একটি ভ্যালু(element ) স্ট্রিং এর মধ্যে আছে কি না ? যদি থাকে True রিটার্ন করবে , যদি না থাকে False রিটার্ন করবে।
Example
mystr='hello'
print('hello' in mystr)
print('world' in mystr)
PythonOutput
True
False
Membership ( not in )
এটি দিয়ে আমরা দেখতে পারি একটি ভ্যালু(element ) স্ট্রিং এর মধ্যে আছে কি না ? যদিও এটির ব্যবহার in এর ঠিক উল্টো (opposite)। যদি না থাকে True রিটার্ন করবে , যদি থাকে False রিটার্ন করবে।
Example
mystr='hello'
print('hello' not in mystr)
print('world' not in mystr)
PythonOutput
False
True
max ( )
একটি স্ট্রিং এর মধ্যে যে alphabet এর ASCII ভ্যালু বেশি সেই alphabet টি রিটার্ন করবে।
Example
mystr='hello'
print(max(mystr))
PythonOutput
o
min ( )
একটি স্ট্রিং এর মধ্যে যে alphabet এর ASCII ভ্যালু কম সেই alphabet টি রিটার্ন করবে।
Example
mystr='hello'
print(min(mystr))
PythonOutput
str ( )
এই ফাংশানটি যে কোন ডেটা-টাইপের ভ্যালুকে স্ট্রিং ডেটা-টাইপে কনভার্ট করতে পারে।
Example
mynumber=9
mystr=str(mynumber)
print(f"value of mynumber: {mynumber} type: {type(mynumber)}")
print(f"value of mystr: {mystr} type: {type(mystr)}")
PythonOutput
value of mynumber: 9 type: <class 'int'>
value of mystr: 9 type: <class 'str'>
ord ( )
এই ফাংশানটি যে কোনো character এর ASCII কোড রিটার্ন করে।
Example
mychar='a'
print(f"the ASCII code of '{mychar}' is {ord(mychar)}")
PythonOutput
the ASCII code of 'a' is 97
chr ( )
এই ফাংশানটি ord ( ) ফাংশানের উল্টো কাজ করে , ASCII কোড থেকে character রিটার্ন করে।
Example
my_ASCII_code=97
print(f"ASCII code: {my_ASCII_code} and the character is '{chr(my_ASCII_code)}'")
PythonOutput
ASCII code: 97 and the character is 'a'
এই পোস্টটি পড়ে আপনাদের মূলবান মতামত জানাতে আমাদের কমেন্ট করুন। আপনাদের কোনো প্রশ্ন থাকলে নির্দ্ধিধায় জিজ্ঞেসা করুন। আমরা চেষ্টা করবো যতো দ্রুত সম্ভব উত্তর দেবার।
ধন্যবাদ!!