Table of Contents
کار با رشتهها در عمل
در این بخش فرض میکنیم با مفهوم کلی رشته (str) آشنا هستید و میدانید چطور یک متغیر متنی بسازید. اینجا روی «کارهایی که میتوان روی رشته انجام داد» تمرکز میکنیم.
اتصال رشتهها (Concatenation)
سادهترین عملیات روی رشتهها چسباندن دو رشته به هم است. این کار با عملگر + انجام میشود.
first_name = "Ali"
last_name = "Ahmadi"
full_name = first_name + last_name
print(full_name) # AliAhmadi
# اضافه کردن فاصله
full_name = first_name + " " + last_name
print(full_name) # Ali Ahmadi
نکته: + بین رشته و عدد کار نمیکند و خطا میدهد. (تبدیل نوع داده در فصل ورودی/خروجی کاملتر میآید.)
age = 20
text = "Age: " + str(age)
print(text) # Age: 20تکرار رشتهها با عملگر `*`
با * میتوانید رشته را چند بار تکرار کنید.
line = "-"
print(line * 10) # ----------
ha = "ha"
print(ha * 3) # hahaha
تعداد تکرار باید عدد صحیح (int) باشد.
دسترسی به کاراکترها (Indexing)
هر کاراکتر در رشته یک «شمارهٔ مکان» دارد که از ۰ شروع میشود.
text = "Python"
print(text[0]) # P
print(text[1]) # y
print(text[5]) # n
اگر شمارهای بزرگتر از طول رشته استفاده کنید، خطای IndexError میگیرید.
میتوانید از اندیس منفی هم استفاده کنید؛ یعنی از انتهای رشته بشمارید:
text = "Python"
print(text[-1]) # n (آخرین حرف)
print(text[-2]) # o (یکی مانده به آخر)برش رشتهها (Slicing)
با «برش» میتوانید بخشی از رشته را جدا کنید. شکل کلی:
$$
\text{new_string} = \text{old_string}[start:stop]
$$
start= اندیس شروع (شامل)stop= اندیس پایان (غیرشامل)
text = "Python"
print(text[0:2]) # Py (از 0 تا قبل از 2)
print(text[1:4]) # yth (از 1 تا قبل از 4)
اگر start را نگذارید، از اول رشته شروع میکند.
اگر stop را نگذارید، تا آخر میرود.
text = "Hello, World!"
print(text[:5]) # Hello
print(text[7:]) # World!گام (step) در برش
شکل کامل برش:
$$
\text{string}[start:stop:step]
$$
step یعنی با چه فاصلهای جلو برویم.
text = "abcdefg"
print(text[0:7:2]) # aceg
print(text[::2]) # aceg (از اول تا آخر، هر دو تا یکی)مثال با گام منفی (برعکس):
text = "Python"
print(text[::-1]) # nohtyP (برعکس کردن رشته)طول رشته با `len()`
با تابع len() میتوانید تعداد کاراکترهای رشته را بهدست آورید.
text = "Python"
length = len(text)
print(length) # 6
ترکیب len() و اندیس آخر:
text = "Python"
last_index = len(text) - 1
print(text[last_index]) # nتغییر حروف (کوچک و بزرگ کردن)
این متدها رشتهٔ جدید برمیگردانند و رشتهٔ اصلی را عوض نمیکنند.
text = "Hello World"
print(text.lower()) # hello world
print(text.upper()) # HELLO WORLDبرای اینکه فقط حرف اول هر کلمه بزرگ شود:
title = "python programming"
print(title.title()) # Python Programmingبرای بزرگ کردن حرف اول کل رشته:
sentence = "hello python"
print(sentence.capitalize()) # Hello pythonحذف فاصلههای اضافی (strip)
گاهی رشته در ابتدا یا انتها فاصله، خط جدید یا تب اضافی دارد.
raw = " hello world "
print("[" + raw + "]") # [ hello world ]
print("[" + raw.strip() + "]") # [hello world]
print("[" + raw.lstrip() + "]") # [hello world ]
print("[" + raw.rstrip() + "]") # [ hello world]strip()→ از ابتدا و انتهاlstrip()→ فقط از چپrstrip()→ فقط از راست
جایگزینی در رشته با `replace()`
برای عوض کردن بخشی از متن از replace(old, new) استفاده میشود.
text = "I like Java"
new_text = text.replace("Java", "Python")
print(new_text) # I like Pythonاگر عبارت چند بار تکرار شده باشد، همه را عوض میکند:
text = "ha ha ha"
print(text.replace("ha", "ho")) # ho ho hoجستجو در رشته (find، in)
استفاده از `in`
برای فهمیدن اینکه یک زیررشته داخل رشته هست یا نه:
text = "Hello, Python"
print("Python" in text) # True
print("Java" in text) # Falseاستفاده از `find()`
find() اگر زیررشته پیدا شود، اندیس اولین محل آن را برمیگرداند، وگرنه -1:
text = "Hello, Python"
print(text.find("Python")) # 7
print(text.find("Java")) # -1تقسیم رشته با `split()`
split() رشته را به لیست تبدیل میکند (کار با لیستها در فصل مجموعههای داده میآید؛ اینجا فقط ایده را میبینیم).
به طور پیشفرض بر اساس فاصله میشکند:
text = "Ali Reza Sara"
parts = text.split()
print(parts) # ['Ali', 'Reza', 'Sara']میتوانید جداکنندهٔ (delimiter) دلخواه بدهید:
data = "apple,banana,orange"
fruits = data.split(",")
print(fruits) # ['apple', 'banana', 'orange']چسباندن رشتهها با `join()`
join() برعکس split() عمل میکند: یک لیست از رشتهها را با یک جداکننده به یک رشته تبدیل میکند.
names = ["Ali", "Reza", "Sara"]
result = " - ".join(names)
print(result) # Ali - Reza - Saraمقایسهٔ رشتهها
رشتهها را میتوان با عملگرهای مقایسهای (==, !=, <, >, ...) مقایسه کرد.
این مقایسهها بر اساس ترتیب حروف (کُد یونیکد) انجام میشود.
print("abc" == "abc") # True
print("abc" == "Abc") # False
print("apple" < "banana") # Trueبرای مقایسهٔ بدون توجه به بزرگی/کوچکی حروف میتوانید هر دو را به یک حالت تبدیل کنید:
a = "Python"
b = "python"
print(a.lower() == b.lower()) # Trueچند رشتهٔ چندخطی (Triple Quotes)
برای نوشتن متن چندخطی میتوانید از """ یا ''' استفاده کنید:
message = """این یک متن چندخطی است
که در چند خط نوشته شده
و همچنان یک رشته محسوب میشود."""
print(message)این روش برای نوشتن متنهای طولانی، راهنماها، یا قالبهای ساده کاربردی است.
چند نکتهٔ مهم عملی
- رشتهها در پایتون «تغییرناپذیر» هستند (immutables):
یعنی متدی مثلreplaceیاupperرشتهٔ جدید میسازد؛ خود رشته را عوض نمیکند.
text = "hello"
text.upper()
print(text) # hello (تغییر نکرده)
text = text.upper()
print(text) # HELLO- برای جلوگیری از خطای اندیس، قبل از دسترسی به کاراکترها میتوانید از
len()استفاده کنید. - برای نمایش رشته در خروجی، معمولا
printساده کافی است؛ ترکیب با متغیرها و قالببندی در فصل «ترکیب متن و متغیرها» میآید.