کار با رشته‌ها در پایتون (Python Strings)

مدیریت و پردازش متن‌ها در برنامه‌ها

در دنیای برنامه‌نویسی، اطلاعات همیشه عدد و محاسبات ریاضی نیستند. بخش بزرگی از داده‌هایی که در برنامه‌های واقعی استفاده می‌کنیم، متن‌ها (Text) هستند؛ مانند نام کاربران، پیام‌ها، آدرس‌ها، اطلاعات محصولات، متن صفحات وب و حتی داده‌هایی که در هوش مصنوعی و تحلیل داده پردازش می‌شوند.

در پایتون برای ذخیره و کار با متن‌ها از نوع داده‌ای به نام رشته (String) استفاده می‌کنیم. رشته‌ها مجموعه‌ای از کاراکترها هستند که می‌توانند شامل حروف، اعداد، فاصله‌ها و علامت‌های مختلف باشند.

در این درس یاد می‌گیریم چگونه رشته‌ها را در پایتون ایجاد کنیم، به بخش‌های مختلف یک متن دسترسی داشته باشیم، طول رشته را پیدا کنیم، متن‌ها را ترکیب و تغییر دهیم، از متدهای کاربردی رشته‌ها استفاده کنیم و با روش‌های استاندارد پردازش متن در برنامه‌های واقعی آشنا شویم.

کار با رشته‌ها یکی از مهارت‌های پایه‌ای در پایتون است؛ زیرا تقریباً در تمام حوزه‌های برنامه‌نویسی، از طراحی وب و ساخت اپلیکیشن گرفته تا علم داده، یادگیری ماشین و هوش مصنوعی، نیاز داریم با متن‌ها کار کنیم.

فهرست مطالب

رشته (String) چیست؟

رشته (String) مجموعه‌ای از یک یا چند کاراکتر (Character) است که در کنار یکدیگر قرار گرفته‌اند و یک متن را تشکیل می‌دهند. این کاراکترها می‌توانند شامل موارد زیر باشند:

  • حروف فارسی یا انگلیسی
  • اعداد
  • فاصله (Space)
  • علامت‌های نگارشی
  • نمادهای مختلف مانند @ ، # ، $ ، %

برای مثال تمام مقادیر زیر رشته محسوب می‌شوند:

name = "Ali"
city = "Tehran"
message = "Welcome to Python"
password = "Abc123@"
phone = "09123456789"

نکته مهم این است که حتی اگر مقدار فقط از اعداد تشکیل شده باشد، تا زمانی که داخل کوتیشن قرار گرفته باشد، عدد نیست و یک رشته محسوب می‌شود. برای مثال:

age = "20"

در این مثال مقدار 20 یک رشته است، نه یک عدد صحیح.

چرا رشته‌ها اهمیت زیادی دارند؟

اگر به برنامه‌هایی که هر روز از آن‌ها استفاده می‌کنید فکر کنید، متوجه می‌شوید بیشتر اطلاعات آن‌ها متنی هستند. برای مثال:

  • نام کاربران در اینستاگرام
  • متن پیام‌های واتساپ
  • عنوان فیلم‌ها در نتفلیکس
  • آدرس صفحات اینترنتی
  • متن ایمیل‌ها
  • رمز عبور کاربران
  • نام فایل‌ها
  • جستجوهای گوگل
  • دستورات ارسالی به ChatGPT

همه این اطلاعات به صورت رشته ذخیره و پردازش می‌شوند. به همین دلیل یادگیری کار با رشته‌ها یکی از مهم‌ترین مهارت‌های هر برنامه‌نویس پایتون است.

ایجاد رشته در پایتون

ساخت رشته در پایتون بسیار ساده است. کافی است متن موردنظر را داخل کوتیشن قرار دهید. پایتون از سه روش برای ایجاد رشته پشتیبانی می‌کند.

استفاده از کوتیشن دوتایی

رایج‌ترین روش استفاده از علامت " " است.

name = "Python"
city = "Tehran"
language = "Persian"

استفاده از کوتیشن تکی

همین کار را می‌توان با ' ' نیز انجام داد.

name = 'Python'
city = 'Tehran'

از نظر پایتون این دو روش هیچ تفاوتی با یکدیگر ندارند و نتیجه کاملاً یکسان است.

چه زمانی از کوتیشن تکی یا دوتایی استفاده کنیم؟

فرض کنید داخل متن از علامت ' استفاده کرده‌ایم. اگر رشته را نیز با ' شروع کنیم، پایتون تصور می‌کند رشته زودتر تمام شده است. مثلاً:

text = 'I'm learning Python'

این کد باعث ایجاد خطا می‌شود. و باید کد را به صورت زیر بنویسیم:

text = "I'm learning Python"

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

text = 'He said "Hello".'

رشته‌های چندخطی (Multi-line Strings)

گاهی لازم است یک متن در چند خط نوشته شود؛ برای مثال توضیحات یک برنامه، متن یک نامه یا محتوای یک فایل. در این حالت از سه کوتیشن متوالی (''' یا """) استفاده می‌کنیم.

message = """
Welcome to Python.
This is the first lesson.
Have fun!
"""
print(message)

خروجی:

Welcome to Python.
This is the first lesson.
Have fun!

نمایش رشته با print()

برای نمایش محتوای یک رشته از تابع print() استفاده می‌کنیم.

name = "Sara"
print(name)

خروجی:

Sara

همچنین می‌توان چند رشته را هم‌زمان چاپ کرد.

print("Hello")
print("Python")
print("Programming")
⚠️ نوشتن توضیح در برنامه (Comment)

از این درس به بعد، برنامه‌های شما به‌تدریج بزرگ‌تر و پیچیده‌تر می‌شوند. اگر بعد از چند هفته دوباره به کدهای خود نگاه کنید، ممکن است به‌راحتی متوجه نشوید هر بخش از برنامه چه کاری انجام می‌دهد. به همین دلیل برنامه‌نویسان داخل کدهای خود توضیح (Comment) می‌نویسند. کامنت‌ها فقط برای خواندن توسط انسان هستند و پایتون هنگام اجرای برنامه آن‌ها را نادیده می‌گیرد. برای نوشتن کامنت تک‌خطی از علامت # استفاده می‌کنیم.

# ذخیره نام دانشجو
name = "Sara"
# نمایش نام
print(name)

وجود کامنت باعث می‌شود افراد دیگر (و حتی خودتان در آینده) راحت‌تر برنامه را درک کنند. برای اینکه چندین خط را کامنت کنید نیازی نیست در ابتدای هر خط علامت # را درج کنید. بلکه کافیست تمام خطوط مورد نظر را انتخاب کرده و سپس ترکیب کلیدهای کنترل و اسلش را فشار دهید. این کار تمام خطوط را کامنت می کند. اگر میخواهید خطوط را از حالت کامنت دربیاورید تا برنامه بتواند آنها را اجرا کند، بازهم باید آنها را انتخاب و ctrl + / را بزنید.

تفاوت رفتار رشته و عدد

فرض کنید دو متغیر زیر را تعریف کرده‌ایم.

a = 10
b = 20
print(a + b)

خروجی:

30

زیرا هر دو متغیر عدد هستند و عملگر + عملیات جمع را انجام می‌دهد. حالا همین مثال را با رشته‌ها اجرا کنیم.

a = "10"
b = "20"
print(a + b)

خروجی:

1020

ممکن است انتظار داشته باشید پاسخ 30 باشد، اما پایتون رشته‌ها را با هم ترکیب (Concatenate) می‌کند و نتیجه "1020" خواهد بود.

اتصال رشته‌ها (Concatenation)

وقتی عملگر + بین دو رشته قرار بگیرد، عملیات جمع انجام نمی‌شود، بلکه دو متن به یکدیگر متصل می‌شوند.

first_name = "Ali"
last_name = "Ahmadi"
print(first_name + last_name)

خروجی:

AliAhmadi

احتمالاً انتظار داشتید بین نام و نام خانوادگی یک فاصله وجود داشته باشد، اما چون خودمان فاصله‌ای اضافه نکرده‌ایم، دو رشته مستقیماً به هم چسبیده‌اند.

راه صحیح:

first_name = "Ali"
last_name = "Ahmadi"
print(first_name + " " + last_name)

خروجی:

Ali Ahmadi

در اینجا " " نیز یک رشته است که فقط شامل یک کاراکتر فاصله (Space) است.

آیا می‌توان رشته و عدد را با هم جمع کرد؟

پایتون اجازه نمی‌دهد یک رشته را مستقیماً با یک عدد ترکیب کنید. مثلاً:

age = 20
print("Age: " + age)

خروجی:

TypeError

زیرا سمت چپ یک رشته است و سمت راست یک عدد.برای رفع این مشکل باید ابتدا عدد را به رشته تبدیل کنیم.

age = 20
print("Age: " + str(age))

خروجی:

Age: 20

تابع str() عدد را به رشته تبدیل می‌کند.

در ادامه مقاله، با تمام توابع تبدیل نوع مانند int()، float() و str() به‌طور کامل آشنا خواهیم شد.

هر کاراکتر در رشته یک شماره دارد

یکی از ویژگی‌های بسیار مهم رشته‌ها این است که پایتون هر رشته را به‌صورت مجموعه‌ای از کاراکترهای پشت سر هم در نظر می‌گیرد.هر کاراکتر دارای یک شماره یا اندیس (Index) است. برای مثال رشته زیر را در نظر بگیرید:

text = "Python"

اگر جایگاه هر حرف را شماره‌گذاری کنیم، خواهیم داشت:

P   y   t   h   o   n
0   1   2   3   4   5

همان‌طور که مشاهده می‌کنید، شماره‌گذاری از صفر شروع می‌شود، نه از یک. این موضوع یکی از ویژگی‌های بیشتر زبان‌های برنامه‌نویسی است و در ابتدای یادگیری باید به آن توجه کنید.

دسترسی به یک کاراکتر (Indexing)

برای دسترسی به یک کاراکتر خاص، کافی است شماره اندیس آن را داخل براکت بنویسیم.

text = "Python"
print(text[0])

خروجی:

P
 

مثال دیگر:

print(text[1])

خروجی:

y
 

و همچنین:

print(text[5])

خروجی:

n

در واقع عبارت text[5] یعنی اینکه کاراکتری را که در اندیس شماره ۵ قرار دارد نمایش بده.

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

text = "Python"

شماره‌گذاری آن به دو صورت خواهد بود:

 P   y   t   h   o   n
 0   1   2   3   4   5
-6  -5  -4  -3  -2  -1

بنابراین:

  • -1 آخرین کاراکتر را نشان می‌دهد.
  • -2 یکی مانده به آخر را نشان می‌دهد.
  • -3 سومین کاراکتر از انتها را نشان می‌دهد.

در تصویر بالا نیز می‌توانید مثال مربوطه را مشاهده کنید.

⚠️ اگر اندیس وجود نداشته باشد چه اتفاقی می‌افتد؟

اگر به اندیسی مراجعه کنیم که خارج از محدوده رشته باشد، پایتون خطا تولید می‌کند. مثلا اگر یک رشته فقط 6 کاراکتر داشته باشد و ما از برنامه بخواهیم کاراکتر اندیس 10 را چاپ کند، خطا می دهد.

برش رشته‌ها (String Slicing)

تا اینجا یاد گرفتیم چگونه یک کاراکتر از رشته را انتخاب کنیم. اما در بسیاری از مواقع به جای یک حرف، به بخشی از متن نیاز داریم. برای مثال:

  • استخراج نام از یک ایمیل
  • جدا کردن پسوند فایل
  • نمایش چند حرف اول یک متن
  • حذف بخشی از اطلاعات
  • استخراج کد یک محصول

برای انجام این کار از قابلیتی به نام Slicing یا برش رشته استفاده می‌کنیم.

ساختار کلی Slicing

ساختار برش رشته به شکل زیر است:

text[start:end]

در این ساختار:

  • start اندیس شروع است.
  • end اندیس پایان است.

نکته بسیار مهم این است که اندیس پایان در خروجی قرار نمی‌گیرد.یعنی برش از start شروع می‌شود اما قبل از رسیدن به end متوقف می‌شود. فرض کنید رشته زیر را داریم:

text = "Python"
P   y   t   h   o   n
0   1   2   3   4   5

مثال اول

print(text[0:2])

خروجی:

Py

زیرا:

  • اندیس ۰ شامل می‌شود.
  • اندیس ۱ شامل می‌شود.
  • اندیس ۲ شامل نمی‌شود.

مثال دوم

print(text[0:4])

خروجی:

Pyth
مثال سوم
print(text[2:5])

خروجی:

tho

در این مثال، کاراکترهای با اندیس ۲، ۳ و ۴ انتخاب شده‌اند.

اگر اندیس شروع را ننویسیم

اگر مقدار start را حذف کنیم، پایتون فرض می‌کند برش از ابتدای رشته آغاز شود.

print(text[:3])

خروجی:

Pyt

در واقع این دستور معادل دستور زیر است:

print(text[0:3])

اگر اندیس پایان را ننویسیم

اگر مقدار end را حذف کنیم، برش تا انتهای رشته ادامه پیدا می‌کند.

print(text[3:])

خروجی:

hon

اگر هیچ اندیسی ننویسیم

گاهی هر دو مقدار حذف می‌شوند.

print(text[:])

خروجی:

Python

در این حالت، یک کپی از رشته ایجاد می‌شود.

استفاده از اندیس‌های منفی در Slicing

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

print(text[-3:])

خروجی:

hon

زیرا سه کاراکتر آخر رشته انتخاب شده‌اند.

مثال دیگر:

print(text[:-2])

خروجی:

Pyth

بررسی نوع یک متغیر با type()

گاهی لازم است بدانیم یک متغیر چه نوع داده‌ای دارد. برای این کار از تابع type() استفاده می‌کنیم.

مثال:

age = 20
print(type(age))

خروجی:

<class 'int'>

یک مثال دیگر:

name = "Python"
print(type(name))

خروجی:

<class 'str'>

انواع داده‌های مهم در متغیرهای پایتون

متغیرها می‌توانند انواع مختلفی از اطلاعات را نگهداری کنند. در پایتون چهار نوع متغیر اصلی داریم.

عدد صحیح (int)

age = 25

عدد اعشاری (float)

height = 175.5

متن یا رشته (str)

name = "Python"

دقت کنید که مقادیر رشته ای داخل یک جفت کوتیشن مارک قرار می گیرند. ” “

مقدار منطقی (bool)

is_active = True

یا:

is_finished = False
⚠️ توضیح بیشتر در مورد متغیرهای منطقی

متغیر بولین (Boolean Variable) نوعی متغیر دو مقداری است؛ یعنی فقط می‌تواند یکی از دو حالت ممکن را نشان دهد. این دو حالت معمولاً به صورت True و False نمایش داده می‌شوند، اما در دنیای واقعی می‌توان آن‌ها را با مفاهیمی مانند Yes/No (بله/خیر)، Positive/Negative (مثبت/منفی)، On/Off (روشن/خاموش) یا Active/Inactive (فعال/غیرفعال) نیز نشان داد. در برنامه‌نویسی از متغیرهای بولین برای ذخیره وضعیت‌ها و تصمیم‌گیری استفاده می‌کنیم؛ برای مثال بررسی اینکه آیا کاربر وارد حساب خود شده است یا نه، آیا یک شرط برقرار است یا خیر، و آیا یک گزینه فعال است یا غیرفعال. مثال در پایتون: is_logged_in = True has_permission = False light_on = True در این مثال، هر متغیر فقط یکی از دو وضعیت ممکن را دارد.

تفاوت متغیر و مقدار

گاهی افراد تازه‌کار این دو مفهوم را اشتباه می‌گیرند. در کد زیر:

age = 20

دو بخش داریم:

age  ---> نام متغیر
20    ---> مقدار ذخیره شده

متغیر یک اسم است، مقدار چیزی است که داخل آن قرار دارد.

⚠️ اشتباهات رایج هنگام کار با متغیرها

اشتباه اول: استفاده قبل از تعریف

print(age)
age = 20

خطای name error میدهد چون متغیر هنوز در خط اول تعریف نشده و آن را نمیشناسد.

اشتباه دوم: تفاوت حروف بزرگ و کوچک پایتون به حروف حساس است. این‌ها سه متغیر متفاوت هستند:

name
Name
NAME

💻 تمرین شماره ۱

سه متغیر بسازید: نام خودتان، سن و شهر محل زندگی و آن‌ها را چاپ کنید.

💻 تمرین شماره 2

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

💻 تمرین شماره 3

نوع متغیرهای زیر را مشخص کنید:

a = 10
b = 3.14
c = "Hello"
d = False

کار با رشته‌ها در پایتون (Python Strings)

حال که با متغیرها به طور کامل آشنا شدید، در درس بعدی به سراغ متغیرهای رشته‌ای می‌رویم. در این درس یاد می‌گیریم چگونه رشته‌ها را در پایتون ایجاد کنیم، به بخش‌های مختلف یک متن دسترسی داشته باشیم، طول رشته را پیدا کنیم، متن‌ها را ترکیب و تغییر دهیم، از متدهای کاربردی رشته‌ها استفاده کنیم و با روش‌های استاندارد پردازش متن در برنامه‌های واقعی آشنا شویم.

گام بعدی کار با رشته‌ها در پایتون

برای شرکت در آزمون آماده‌اید؟

با ورود به پنل کاربری می‌توانید جهت ثبت نام در آزمون‌ها و دسترسی به منابع آموزشی اقدام نمایید. کارشناسان ما در اسرع وقت با شما تماس می‌گیرند.