Table of Contents
آشنایی با نوع دادهٔ `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)کاربردهای معمول:
- نوشتن متنهای طولانی (توضیحات، پیامها، قالبها)
- ساختن رشتههایی که شامل خط جدید (
\n) هستند بدون نیاز به نوشتن\nبه صورت دستی.
طول رشته با `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اندیس منفی: شمردن از انتها
با اندیس منفی، از انتهای رشته به ابتدای آن میشماریم:
- آخرین کاراکتر → اندیس
-1 - یکی مانده به آخر → اندیس
-2
word = "Python"
print(word[-1]) # n
print(word[-2]) # o
print(word[-3]) # hبرش رشته (Slicing)
گاهی میخواهیم بخشی از یک رشته را جدا کنیم. برای این کار از «برش» استفاده میکنیم:
شکل کلی:
$$
text[start:end]
$$
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 ها
گاهی نیاز داریم در یک رشته، کاراکترهایی بنویسیم که نوشتن مستقیم آنها سخت است، مثل:
- خط جدید
- خودِ
" یا ' - تب (فاصلهٔ زیاد مثل دکمهٔ Tab)
برای این کار از «بکاسلش» \ استفاده میشود.
خط جدید: `\n`
text = "سلام\nدنیا"
print(text)خروجی:
سلام
دنیاتب (فاصلهٔ Tab): `\t`
text = "ستون اول\tستون دوم"
print(text)گذاشتن کوتیشن داخل رشته
اگر میخواهید " داخل رشتهای که با " " ساخته شده، استفاده کنید، میتوانید از \" استفاده کنید:
text = "او گفت: \"سلام\""
print(text)یا:
text = 'It\'s OK'
print(text)برخی کاراکترهای رایج:
\n→ خط جدید\t→ تب (Tab)\'→ کوتیشن تکی داخل رشته\"→ کوتیشن دوتایی داخل رشته\\→ خودِ بکاسلش\
چند متد مهم رشتهای (بدون ورود عمیق)
رشتهها در پایتون «متد»های زیادی دارند (متدها را در فصلهای مربوط بهشان بیشتر میبینیم). در اینجا چند مورد پرکاربرد را فقط معرفی میکنیم تا حس کار با متن را بهدست بیاورید.
تبدیل به حروف کوچک و بزرگ: `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)) # کاراکترهای فارسی و فاصلهها هم شمرده میشوندبهخاطر جهت راستبهچپ فارسی، ممکن است در بعضی ترمینالها یا ویرایشگرها نمایش کمی نامرتب بهنظر برسد، ولی خودِ دادهها در پایتون درست هستند.
تمرینهای پیشنهادی
برای تمرین، میتوانید این کارها را انجام دهید:
- یک رشته شامل نام و نام خانوادگی خودتان بسازید و:
- نام کوچک را با برش (
slicing) جدا کنید. - نام خانوادگی را جدا کنید.
- رشتهای بسازید که در چند خط، یک پیام خوشامدگویی چاپ کند (با استفاده از
"""). - رشتهای بسازید که در آن از
\nو\tاستفاده کرده باشید و نتیجه را روی صفحه ببینید. - برنامهای بنویسید که:
- یک رشته در متغیر
textذخیره کند. - طول رشته را چاپ کند.
- اولین و آخرین کاراکتر رشته را چاپ کند (با اندیس مثبت و منفی).
در فصلهای بعد، از رشتهها در کنار بقیهٔ انواع داده و دستورات کنترلی استفاده خواهیم کرد تا برنامههای واقعیتر بنویسیم.