Kahibaro
Discord Login Register

متن (`str`)

آشنایی با نوع دادهٔ `str` برای متن

در پایتون برای کار با متن از نوع دادهٔ str (مخفف string) استفاده می‌کنیم. هر چیزی که درون کوتیشن (نقل‌قول) قرار بگیرد، یک رشتهٔ متنی (str) است.

نمونه‌های ساده:

"سلام"
'Python'
"123"
"سلام دنیا"

در این مثال‌ها، همه‌ی مقادیر از نوع str هستند، حتی "123"، چون در کوتیشن قرار دارد.

می‌توانیم نتیجه را با type() ببینیم (توضیح کامل type() در فصلِ مربوط به خودش است):

type("سلام")    # str

تعریف رشته با کوتیشن تکی و دوتایی

برای ساختن str می‌توانیم از کوتیشن تکی ' یا دوتایی " استفاده کنیم. از نظر پایتون هیچ تفاوتی در نوع داده نیست؛ تفاوت بیشتر برای راحتی نوشتن است.

name1 = "Ali"
name2 = 'Reza'
print(name1)
print(name2)

اگر متنِ شما خودش شامل ' باشد، معمولاً از " بیرونی استفاده می‌کنید (و برعکس):

text1 = "I'm learning Python"
text2 = 'او گفت: "سلام!"'
print(text1)
print(text2)

رشته‌های چندخطی با `'''` و `"""`

اگر بخواهید یک متن در چند خط بنویسید، می‌توانید از سه‌تاییِ کوتیشن استفاده کنید:

message = """این یک متن چندخطی است.
خط دوم اینجاست.
و این هم خط سوم.
"""
print(message)

یا با کوتیشن تکی سه‌تایی:

note = '''سلام
این هم یک
رشتهٔ چندخطی دیگر است.'''
print(note)

کاربردهای معمول:

طول رشته با `len()`

برای به‌دست آوردن تعداد کاراکترهای یک رشته، از تابع len() استفاده می‌کنیم:

text = "سلام"
print(len(text))   # تعداد کاراکترها

دقت کنید فاصله، نقطه و سایر نشانه‌ها هم کاراکتر محسوب می‌شوند:

msg = "Hello World!"
print(len(msg))    # فاصله و ! هم شمرده می‌شوند

اندیس‌گذاری (Indexing): دسترسی به کاراکترهای رشته

رشته‌ها مثل یک «ردیف» از کاراکترها هستند. می‌توانیم با استفاده از اندیس (شمارهٔ مکان) به هر کاراکتر دسترسی پیدا کنیم.

اندیس‌ها از ۰ شروع می‌شوند:

text = "Python"
print(text[0])   # P
print(text[1])   # y
print(text[2])   # t

اگر به اندیسی که وجود ندارد دسترسی بگیرید، خطا رخ می‌دهد:

text = "Hi"
print(text[5])   # خطای IndexError

اندیس منفی: شمردن از انتها

با اندیس منفی، از انتهای رشته به ابتدای آن می‌شماریم:

word = "Python"
print(word[-1])   # n
print(word[-2])   # o
print(word[-3])   # h

برش رشته (Slicing)

گاهی می‌خواهیم بخشی از یک رشته را جدا کنیم. برای این کار از «برش» استفاده می‌کنیم:

شکل کلی:

$$
text[start:end]
$$

text = "Python programming"
print(text[0:6])    # 'Python'
print(text[7:18])   # 'programming'

اگر start را نگذاریم، یعنی از ابتدای رشته:

print(text[:6])     # 'Python'

اگر end را نگذاریم، یعنی تا انتهای رشته:

print(text[7:])     # 'programming'

می‌توانیم از اندیس منفی هم استفاده کنیم:

msg = "Hello World"
print(msg[-5:])   # 'World'
print(msg[:-6])   # 'Hello'

رشته‌ها «غیرقابل تغییر» هستند (Immutable)

نکتهٔ مهم: بعد از ساختن یک رشته، نمی‌توانیم مستقیماً یکی از کاراکترهایش را عوض کنیم.

این کار اشتباه است و خطا می‌دهد:

text = "Hello"
text[0] = "h"    # خطا

اگر بخواهیم رشته‌ای را «تغییر» دهیم، در واقع یک رشتهٔ جدید می‌سازیم:

text = "Hello"
new_text = "h" + text[1:]   # 'hello'
print(new_text)

عملگر `+` برای چسباندن رشته‌ها (Concatenation)

با + می‌توانیم دو یا چند رشته را به هم بچسبانیم:

first = "سلام"
last = "دنیا"
msg = first + " " + last
print(msg)    # سلام دنیا

زمانی که با متغیرها کار می‌کنیم:

name = "علی"
greeting = "سلام " + name + "!"
print(greeting)

اگر نوع دادهٔ دیگر (مثلاً عدد) را با رشته بدون تبدیل بچسبانید، خطا می‌گیرد (تبدیل نوع را در فصل‌های دیگر خواهیم دید):

age = 20
# greeting = "من " + age + " ساله هستم"   # خطا

تکرار رشته با عملگر `*`

با * می‌توانیم یک رشته را چند بار پشت‌سرهم تکرار کنیم:

line = "-"
print(line * 10)     # ----------
laugh = "ها"
print(laugh * 3)     # هاهاها

کاراکترهای ویژه و Escape Sequence ها

گاهی نیاز داریم در یک رشته، کاراکترهایی بنویسیم که نوشتن مستقیم آن‌ها سخت است، مثل:

برای این کار از «بک‌اسلش» \ استفاده می‌شود.

خط جدید: `\n`

text = "سلام\nدنیا"
print(text)

خروجی:

سلام
دنیا

تب (فاصلهٔ Tab): `\t`

text = "ستون اول\tستون دوم"
print(text)

گذاشتن کوتیشن داخل رشته

اگر می‌خواهید " داخل رشته‌ای که با " " ساخته شده، استفاده کنید، می‌توانید از \" استفاده کنید:

text = "او گفت: \"سلام\""
print(text)

یا:

text = 'It\'s OK'
print(text)

برخی کاراکترهای رایج:

چند متد مهم رشته‌ای (بدون ورود عمیق)

رشته‌ها در پایتون «متد»های زیادی دارند (متدها را در فصل‌های مربوط به‌شان بیشتر می‌بینیم). در این‌جا چند مورد پرکاربرد را فقط معرفی می‌کنیم تا حس کار با متن را به‌دست بیاورید.

تبدیل به حروف کوچک و بزرگ: `lower()` و `upper()`

text = "SalAm"
print(text.lower())   # salam
print(text.upper())   # SALAM

حذف فاصله‌های اضافی ابتدا و انتها: `strip()`

text = "   سلام   "
print(text.strip())    # 'سلام'

جایگزینی بخشی از متن: `replace()`

text = "سلام دنیا"
new_text = text.replace("دنیا", "جهان")
print(new_text)   # سلام جهان

جست‌وجوی زیررشته: `in`

برای فهمیدن این که یک متن در متن دیگری وجود دارد یا نه:

text = "برنامه‌نویسی با پایتون"
print("پایتون" in text)      # True
print("جاوا" in text)        # False

کار با حروف فارسی و لاتین در رشته‌ها

رشته‌های پایتون به‌خوبی از کاراکترهای یونیکد (از جمله فارسی) پشتیبانی می‌کنند، بنابراین ترکیب فارسی و انگلیسی در یک رشته مشکلی ندارد:

msg = "سلام Ali، خوش آمدی!"
print(msg)
print(len(msg))   # کاراکترهای فارسی و فاصله‌ها هم شمرده می‌شوند

به‌خاطر جهت راست‌به‌چپ فارسی، ممکن است در بعضی ترمینال‌ها یا ویرایشگرها نمایش کمی نامرتب به‌نظر برسد، ولی خودِ داده‌ها در پایتون درست هستند.


تمرین‌های پیشنهادی

برای تمرین، می‌توانید این کارها را انجام دهید:

  1. یک رشته شامل نام و نام خانوادگی خودتان بسازید و:
    • نام کوچک را با برش (slicing) جدا کنید.
    • نام خانوادگی را جدا کنید.
  2. رشته‌ای بسازید که در چند خط، یک پیام خوشامدگویی چاپ کند (با استفاده از """).
  3. رشته‌ای بسازید که در آن از \n و \t استفاده کرده باشید و نتیجه را روی صفحه ببینید.
  4. برنامه‌ای بنویسید که:
    • یک رشته در متغیر text ذخیره کند.
    • طول رشته را چاپ کند.
    • اولین و آخرین کاراکتر رشته را چاپ کند (با اندیس مثبت و منفی).

در فصل‌های بعد، از رشته‌ها در کنار بقیهٔ انواع داده و دستورات کنترلی استفاده خواهیم کرد تا برنامه‌های واقعی‌تر بنویسیم.

Views: 5

Comments

Please login to add a comment.

Don't have an account? Register now!