- String — পুনরায় পরিচয়
- Escape Characters
- String Indexing ও Slicing
- String Formatting — f-string, format(), %
- f-string Advanced — সংখ্যার ফরম্যাট
- Case Methods — upper, lower, title, capitalize
- Search ও Replace Methods
- Split ও Join — String ভাঙা ও জোড়া লাগানো
- Strip Methods — ছাঁটাই করা
- Validation Methods — isdigit, isalpha ইত্যাদি
- String ও Loop
- প্র্যাকটিক্যাল প্রজেক্ট — Text Analyzer
- সারাংশ ও অনুশীলন
পর্ব ২-এ আমরা String-এর প্রাথমিক ধারণা পেয়েছিলাম। এই পর্বে আমরা String-কে সম্পূর্ণভাবে জানব — Formatting, সব গুরুত্বপূর্ণ Method, এবং বাস্তব কাজে String ব্যবহার। Python-এ প্রায় সব কাজেই String লাগে — Web, Data, File — সর্বত্র।
String হলো অক্ষরের একটি ক্রমানুসারী সংগ্রহ। Python-এ String Immutable — একবার তৈরি হলে সরাসরি পরিবর্তন করা যায় না, তবে নতুন String তৈরি করা যায়।
# Single quote s1 = 'হ্যালো Python' # Double quote s2 = "Python শেখা মজার" # Triple quote — Multi-line s3 = """এটি একটি Multi-line String""" # Raw String — Backslash literal হিসেবে নেয় path = r"C:\Users\rahim\Desktop" # String Repetition line = "─" * 30 print(line) # String Concatenation full = "রাহিম" + " " + "করিম" print(full) # String Immutable — সরাসরি পরিবর্তন যায় না name = "rahim" name = name.upper() # নতুন String তৈরি হয় print(name)
────────────────────────────── রাহিম করিম RAHIM
Escape Character হলো বিশেষ অক্ষর যা Backslash (\) দিয়ে শুরু হয় এবং String-এ বিশেষ কাজ করে।
# \n — নতুন লাইন print("প্রথম লাইন\nদ্বিতীয় লাইন\nতৃতীয় লাইন") # \t — Tab print("নাম:\tরাহিম") print("বয়স:\t২২") # Quote-এর ভেতরে Quote print('সে বলল, \'আমি Python শিখছি\'') print("সে বলল, \"আমি Python শিখছি\"") # \\ — Backslash নিজেই print("ফাইল পাথ: C:\\Users\\rahim") # r"" — Raw String, Backslash literal print(r"ফাইল পাথ: C:\Users\rahim")
প্রথম লাইন দ্বিতীয় লাইন তৃতীয় লাইন নাম: রাহিম বয়স: ২২ সে বলল, 'আমি Python শিখছি' সে বলল, "আমি Python শিখছি" ফাইল পাথ: C:\Users\rahim ফাইল পাথ: C:\Users\rahim
String-ও List-এর মতো Index ও Slice করা যায়। প্রতিটি অক্ষরের একটি Index আছে।
text = "Python" # P y t h o n # index: 0 1 2 3 4 5 # neg: -6 -5 -4 -3 -2 -1 print(text[0]) # P print(text[-1]) # n print(text[1:4]) # yth print(text[:3]) # Pyt print(text[3:]) # hon print(text[::-1]) # nohtyP — উল্টো print(text[::2]) # Pto — একটি পর পর # Palindrome চেক — উল্টালেও একই? word = "level" print(f"'{word}' Palindrome? {word == word[::-1]}") word2 = "python" print(f"'{word2}' Palindrome? {word2 == word2[::-1]}")
P n yth Pyt hon nohtyP Pto 'level' Palindrome? True 'python' Palindrome? False
String-এর মধ্যে Variable-এর মান ঢোকানোর তিনটি পদ্ধতি আছে।
সবচেয়ে আধুনিক ও সহজ। সরাসরি {} এর ভেতরে Variable।
Python 3-এর পুরনো পদ্ধতি। {} placeholder ব্যবহার করে।
সবচেয়ে পুরনো পদ্ধতি। এখনও চলে কিন্তু কম ব্যবহৃত।
naam = "রাহিম" boyos = 22 gpa = 3.85 # পদ্ধতি ১: f-string (সবচেয়ে ভালো) print(f"নাম: {naam}, বয়স: {boyos}, GPA: {gpa}") # পদ্ধতি ২: .format() print("নাম: {}, বয়স: {}, GPA: {}".format(naam, boyos, gpa)) # নাম দিয়েও format() করা যায় print("নাম: {n}, বয়স: {b}".format(n=naam, b=boyos)) # পদ্ধতি ৩: % formatting print("নাম: %s, বয়স: %d, GPA: %.2f" % (naam, boyos, gpa))
নাম: রাহিম, বয়স: 22, GPA: 3.85 নাম: রাহিম, বয়স: 22, GPA: 3.85 নাম: রাহিম, বয়স: 22 নাম: রাহিম, বয়স: 22, GPA: 3.85
সবসময় f-string ব্যবহার করো — এটি সবচেয়ে পড়তে সহজ, দ্রুত এবং আধুনিক।
f-string দিয়ে সংখ্যাকে বিভিন্নভাবে সুন্দরভাবে দেখানো যায়।
pi = 3.14159265 price = 1234567.89 percent = 0.7543 # দশমিক নিয়ন্ত্রণ print(f"PI (2 দশমিক): {pi:.2f}") print(f"PI (4 দশমিক): {pi:.4f}") # হাজারের কমা print(f"মূল্য: {price:,.2f} টাকা") # শতাংশ print(f"শতাংশ: {percent:.1%}") # নির্দিষ্ট প্রস্থে সাজানো print(f"{'নাম':15} {'নম্বর':8} {'গ্রেড':5}") print(f"{'রাহিম':15} {85:8} {'A+':5}") print(f"{'সালমা আক্তার':15} {91:8} {'A+':5}") # শূন্য দিয়ে padding print(f"রোল নম্বর: {7:04d}") # 0007 # বাইনারি, হেক্স, অক্টাল print(f"255 → Binary: {255:b}, Hex: {255:x}, Octal: {255:o}")
PI (2 দশমিক): 3.14 PI (4 দশমিক): 3.1416 মূল্য: 1,234,567.89 টাকা শতাংশ: 75.4% নাম নম্বর গ্রেড রাহিম 85 A+ সালমা আক্তার 91 A+ রোল নম্বর: 0007 255 → Binary: 11111111, Hex: ff, Octal: 377
String-এর অক্ষরের বড়/ছোট হাত পরিবর্তনের Method।
text = "hello python world" text2= "HELLO PYTHON WORLD" print(text.upper()) # HELLO PYTHON WORLD print(text2.lower()) # hello python world print(text.title()) # Hello Python World print(text.capitalize()) # Hello python world print(text.swapcase()) # HELLO PYTHON WORLD print(text2.swapcase()) # hello python world # Case-insensitive তুলনা a = "Python" b = "python" print(f"সমান? {a == b}") # False print(f"সমান (ignore case)? {a.lower() == b.lower()}") # True
HELLO PYTHON WORLD hello python world Hello Python World Hello python world HELLO PYTHON WORLD hello python world সমান? False সমান (ignore case)? True
প্রথম occurrence-এর index দেয়, না পেলে -1
শেষ occurrence-এর index দেয়
find()-এর মতো, না পেলে Error
কতবার আছে গণনা করে
পুরনো অংশ নতুন দিয়ে বদলায়
s দিয়ে শুরু হলে True
s দিয়ে শেষ হলে True
sub থাকলে True
sentence = "Python শেখা মজার। Python দিয়ে অনেক কাজ করা যায়।" # find() ও count() print(f"প্রথম 'Python' কোথায়: {sentence.find('Python')}") print(f"'Python' কতবার: {sentence.count('Python')}") print(f"'Java' আছে কি: {sentence.find('Java')}") # -1 # replace() new_s = sentence.replace("Python", "🐍 Python") print(new_s) # startswith ও endswith email = "rahim@gmail.com" print(f"Gmail? {email.endswith('@gmail.com')}") # True print(f"rahim? {email.startswith('rahim')}") # True # in operator print(f"'মজার' আছে? {'মজার' in sentence}") # True # URL validation সহজ উদাহরণ urls = ["https://esbangla.com", "http://example.com", "not-a-url"] for url in urls: valid = url.startswith("http") print(f"{'✅' if valid else '❌'} {url}")
প্রথম 'Python' কোথায়: 0 'Python' কতবার: 2 'Java' আছে কি: -1 🐍 Python শেখা মজার। 🐍 Python দিয়ে অনেক কাজ করা যায়। Gmail? True rahim? True 'মজার' আছে? True ✅ https://esbangla.com ✅ http://example.com ❌ not-a-url
split() এবং join() হলো সবচেয়ে বেশি ব্যবহৃত String Method — একটি String-কে List-এ ভাঙে, অন্যটি List-কে String-এ জোড়া লাগায়।
# split() — String → List sentence = "Python শেখা অনেক মজার" words = sentence.split() # space দিয়ে ভাঙে print(words) # নির্দিষ্ট delimiter দিয়ে ভাঙা csv = "রাহিম,করিম,সালমা,নাসরিন" names = csv.split(",") print(names) # সর্বোচ্চ কতবার ভাঙবে parts = csv.split(",", 2) print(parts) # ['রাহিম', 'করিম', 'সালমা,নাসরিন'] # join() — List → String fruits = ["আম", "কলা", "লিচু"] joined = ", ".join(fruits) print(joined) # আম, কলা, লিচু joined2 = " | ".join(fruits) print(joined2) # আম | কলা | লিচু joined3 = "".join(fruits) print(joined3) # আমকলালিচু # বাস্তব ব্যবহার — URL slug তৈরি title = "Python Tutorial For Beginners" slug = "-".join(title.lower().split()) print(slug) # python-tutorial-for-beginners
['Python', 'শেখা', 'অনেক', 'মজার'] ['রাহিম', 'করিম', 'সালমা', 'নাসরিন'] ['রাহিম', 'করিম', 'সালমা,নাসরিন'] আম, কলা, লিচু আম | কলা | লিচু আমকলালিচু python-tutorial-for-beginners
String-এর শুরু বা শেষের অতিরিক্ত space বা অক্ষর সরাতে Strip Methods ব্যবহার হয়।
messy = " হ্যালো Python " print(f"আগে: '{messy}'") print(f"strip: '{messy.strip()}'") # উভয় দিক print(f"lstrip: '{messy.lstrip()}'") # শুধু বাম print(f"rstrip: '{messy.rstrip()}'") # শুধু ডান # নির্দিষ্ট অক্ষর সরানো url = "###esbangla.com###" print(url.strip("#")) # esbangla.com # বাস্তব ব্যবহার — user input পরিষ্কার করা user_input = " rahim@gmail.com " clean = user_input.strip().lower() print(f"পরিষ্কার Email: '{clean}'")
আগে: ' হ্যালো Python ' strip: 'হ্যালো Python' lstrip: 'হ্যালো Python ' rstrip: ' হ্যালো Python' esbangla.com পরিষ্কার Email: 'rahim@gmail.com'
String-এর বিষয়বস্তু যাচাই করার Method — সবগুলো True বা False দেয়।
| Method | True হয় যখন | উদাহরণ |
|---|---|---|
| isdigit() | সব অক্ষর সংখ্যা | "123".isdigit() → True |
| isalpha() | সব অক্ষর letter | "abc".isalpha() → True |
| isalnum() | letter বা digit, space নেই | "abc123".isalnum() → True |
| isspace() | শুধু whitespace | " ".isspace() → True |
| isupper() | সব বড় হাত | "ABC".isupper() → True |
| islower() | সব ছোট হাত | "abc".islower() → True |
| istitle() | প্রতিটি শব্দ Capital | "Hello World".istitle() → True |
def validate_password(password): """পাসওয়ার্ড যাচাই করে।""" errors = [] if len(password) < 8: errors.append("কমপক্ষে ৮ অক্ষর দরকার") if not any(c.isdigit() for c in password): errors.append("কমপক্ষে একটি সংখ্যা দরকার") if not any(c.isupper() for c in password): errors.append("কমপক্ষে একটি বড় হাত অক্ষর দরকার") if not any(c.isalpha() for c in password): errors.append("কমপক্ষে একটি অক্ষর দরকার") if errors: print(f"❌ '{password}' যোগ্য নয়:") for e in errors: print(f" • {e}") else: print(f"✅ '{password}' সঠিক পাসওয়ার্ড!") validate_password("abc") print() validate_password("Rahim123")
❌ 'abc' যোগ্য নয়: • কমপক্ষে ৮ অক্ষর দরকার • কমপক্ষে একটি সংখ্যা দরকার • কমপক্ষে একটি বড় হাত অক্ষর দরকার ✅ 'Rahim123' সঠিক পাসওয়ার্ড!
text = "Hello World" # প্রতিটি অক্ষর iterate for char in text: print(char, end="-") print() # vowel গণনা vowels = "aeiouAEIOU" count = sum(1 for c in text if c in vowels) print(f"Vowel সংখ্যা: {count}") # অক্ষরের frequency Dictionary freq = {} for char in text.lower(): if char.isalpha(): freq[char] = freq.get(char, 0) + 1 print(f"অক্ষর frequency: {freq}") # String Comprehension — শুধু অক্ষর রাখো dirty = "h3ll0 w0rld!" clean = "".join([c for c in dirty if c.isalpha()]) print(f"শুধু অক্ষর: '{clean}'")
H-e-l-l-o- -W-o-r-l-d-
Vowel সংখ্যা: 3
অক্ষর frequency: {'h': 1, 'e': 1, 'l': 3, 'o': 2, 'w': 1, 'r': 1, 'd': 1}
শুধু অক্ষর: 'hllwrld'
এই পর্বের সব String ধারণা একসাথে ব্যবহার করে একটি সম্পূর্ণ Text Analyzer তৈরি করি।
যেকোনো টেক্সট বিশ্লেষণ করে — শব্দ সংখ্যা, অক্ষর, সবচেয়ে বেশি ব্যবহৃত শব্দ, বাক্য সংখ্যা এবং আরও তথ্য বের করবে।
def analyze_text(text): """টেক্সট বিশ্লেষণ করে বিভিন্ন তথ্য দেয়।""" if not text.strip(): return "❌ খালি টেক্সট!" # মৌলিক পরিসংখ্যান total_chars = len(text) chars_no_space = len(text.replace(" ", "")) words = text.split() word_count = len(words) sentences = len([s for s in text.split(".") if s.strip()]) # Vowel গণনা vowels = "aeiouAEIOU" vowel_count = sum(1 for c in text if c in vowels) # শব্দের frequency word_freq = {} for word in words: w = word.lower().strip(".,!?;:") if w: word_freq[w] = word_freq.get(w, 0) + 1 # শীর্ষ ৩ শব্দ top3 = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)[:3] # সবচেয়ে দীর্ঘ শব্দ longest = max(words, key=len) # গড় শব্দের দৈর্ঘ্য avg_len = sum(len(w) for w in words) / word_count # রিপোর্ট প্রিন্ট print("╔══════════════════════════════╗") print("║ Text Analysis Report ║") print("╚══════════════════════════════╝") print(f"📝 মোট অক্ষর: {total_chars}") print(f"📝 Space ছাড়া: {chars_no_space}") print(f"📖 মোট শব্দ: {word_count}") print(f"📜 মোট বাক্য: {sentences}") print(f"🔤 Vowel সংখ্যা: {vowel_count}") print(f"📏 দীর্ঘতম শব্দ: '{longest}' ({len(longest)} অক্ষর)") print(f"📐 গড় শব্দের দৈর্ঘ্য: {avg_len:.1f}") print("\n🏆 শীর্ষ ৩ শব্দ:") for i, (word, cnt) in enumerate(top3, 1): print(f" {i}. '{word}' — {cnt} বার") # ── পরীক্ষা ── sample = """ Python is a great programming language. Python is easy to learn. Many developers love Python. Python can be used for web development, data science, and artificial intelligence. Learning Python is fun. """ analyze_text(sample)
╔══════════════════════════════╗ ║ Text Analysis Report ║ ╚══════════════════════════════╝ 📝 মোট অক্ষর: 196 📝 Space ছাড়া: 162 📖 মোট শব্দ: 33 📜 মোট বাক্য: 5 🔤 Vowel সংখ্যা: 57 📏 দীর্ঘতম শব্দ: 'intelligence.' (14 অক্ষর) 📐 গড় শব্দের দৈর্ঘ্য: 6.0 🏆 শীর্ষ ৩ শব্দ: 1. 'python' — 5 বার 2. 'is' — 3 বার 3. 'learning' — 2 বার
- String তৈরির সব পদ্ধতি — single, double, triple quote, raw string
- Escape Characters — \n, \t, \\, \', \"
- String Indexing ও Slicing — Palindrome চেক
- তিনটি Formatting পদ্ধতি — f-string (সেরা), .format(), %
- f-string Advanced — দশমিক, হাজারের কমা, padding, alignment
- Case Methods — upper, lower, title, capitalize, swapcase
- Search Methods — find, rfind, count, in operator
- Replace ও Check — replace, startswith, endswith
- split() ও join() — URL slug তৈরি উদাহরণ
- Strip Methods — strip, lstrip, rstrip
- Validation Methods — isdigit, isalpha, isupper, islower
- Password Validator প্রজেক্ট
- Text Analyzer প্রজেক্ট
- Palindrome Checker: একটি শব্দ বা বাক্য নিয়ে Palindrome কিনা যাচাই করো (space ও case ignore করো)
- Caesar Cipher: একটি String-এর প্রতিটি অক্ষর নির্দিষ্ট সংখ্যক ঘর সরিয়ে encode করো
- Email Validator: Email address-এ @ আছে কিনা, .com বা .net দিয়ে শেষ কিনা চেক করো
- Word Reverser: একটি বাক্যের প্রতিটি শব্দ উল্টো করো কিন্তু শব্দের ক্রম ঠিক রাখো
- Slug Generator: যেকোনো Blog title নিয়ে URL-friendly slug তৈরি করো (lowercase, hyphen দিয়ে)
- File খোলা, পড়া ও লেখা — open(), read(), write()
- with statement — নিরাপদ File handling
- Text File ও Binary File-এর পার্থক্য
- CSV File পড়া ও লেখা
- বাস্তব প্রজেক্ট — Diary App

0 Comments