Kahibaro
Discord Login Register

عملیات روی رشته‌ها

کار با رشته‌ها در عمل

در این بخش فرض می‌کنیم با مفهوم کلی رشته (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]
$$

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]

جایگزینی در رشته با `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)

این روش برای نوشتن متن‌های طولانی، راهنماها، یا قالب‌های ساده کاربردی است.

چند نکتهٔ مهم عملی

  text = "hello"
  text.upper()
  print(text)        # hello (تغییر نکرده)
  text = text.upper()
  print(text)        # HELLO

Views: 6

Comments

Please login to add a comment.

Don't have an account? Register now!