آموزش پایتون

آشنایی کامل با رشته ها در پایتون

بررسی کامل رشته ها [ Strings ] در پایتون

آشنایی با رشته ها در پایتون. آشنایی با رشته ها در پایتون

لیترال های رشته ای

برای آشنایی با رشته ها در پایتون با گیسوم طرح همراه باشید.

لیترال های رشته ای در پایتون بین دو علامت کوتیشن تکی یا دابل کوتیشن قرار می گیرند.

برای مثال ‘Gisoomtarh.com’ دقیقا برابر “Gisoomtarh.com” است.

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

print("Gisoomtarh.com")
print('Gisoomtarh.com')

خروجی کد بالا :

Gisoomtarh.com
Gisoomtarh.com

اختصاص مقادیر رشته ای به متغیرها

برای اختصاص یک لیترال رشته ای به یک متغیر ابتدا یک نام را برای متغیر در نظر گرفته و با یک علامت مساوی و اختصاص مقداری رشته ای ذر داخل تک کوتیشن یا دابل کوتیشن آن را ساخت.

a = "Hello"
print(a)

خروجی کد بالا:

Hello

لیترال های رشته ای چندخطی

در پایتون می توانید یک لیترال رشته ای چند خطی را با استفاده از کوتیشن سه تایی به یک متغیر اختصاص داد.

a = """Salam!
Python yek zaban
sathe bala
va hame manzoore ast"""
print(a)

خروجی کد بالا:

Salam!
Python yek zaban
sathe bala
va hame manzoore ast

توجه: برای اختصاص یک لیترال رشته ای همچنین می توانید رشته را داخل تک کوتیشن های سه تایی (”’) قرار داد.

a = '''Salam!
Python yek zaban
sathe bala
va hame manzoore ast'''
print(a)

رشته ها به عنوان آرایه

مانند بسیاری از زبانهای برنامه نویسی محبوب دیگر ، رشته ها در پایتون بعنوان آرایه ای از بایت ها برای نمایش کارکترهای یونیکد عمل می کنند.

اگر چه پایتون دیتا تایپ خاصی برای کاراکترها ندارد ولی بطور کلی یک کاراکتر تکی یک رشته ساده با طول 1 تلقی می گردد.

در یک رشته هر کاراکتر نسبت به جایی که قرار گرفته یک شماره که در برنامه نویسی از آن بعنوان Index یا اندیس یاد می شود را به خود اختصاص می دهد.

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

برای اینکه بفهمیم یک رشته چند کاراکتر دارد میتوان از تابع ()len استفاده کرد.

درپایتون برای دسترسی به عناصر یک رشته میتوان از کروشه یا براکت مربعی [ ] استفاده کرد.

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

باید توجه داشت شماره گذاری کارکترها از عدد 0 شروع میشود . یعنی اولین کاراکتر با صفر نمایش داده می شود در نتیجه برای نشان دادن کاراکتر دوم باید شماره آن یعنی عدد 1 را در کد قرار دهیم.

a = "Hello, World!"
print(a[1])

خروجی :

e

ایجاد برش در رشته ها با ایندکس گذاری

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

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

domain = "Gisoomtarh.com"
print(domain[3:7])

خروجی کد بالا :

oomt

در مثال بالا عملیات برش از ایندکس شماره 3 که همان کارکتر چهارم می باشد (دلیل آن شروع شماره گذاری کاراکترها از عدد 0 است) شروع شده و در ایندکس شماره 7 که در واقع کاراکتر هشتم می باشد به پایان می رسد.

ایندکس گذاری معکوس

در این روش با استفاده از علامت – (منفی) عملیات ایندکس گذاری به حالت معکوس و از انتهای رشته اجرا می شود.

به مثال زیر توجه کنید :

domain = "Gisoomtarh.com"
print(domain[-7:-3])

خروجی کد بالا :

arh.

مشخص کردن طول رشته با تابع ()len

برای دریافت طول یک رشته (تعداد کاراکترهای رشته) از تابع ()len استفاده می شود.

domain = "Gisoomtarh.com"
print(len(domain))

خروجی کد بالا :

14

طول رشته ریخته شده در متغیر domain برابر با 14 کاراکتر است.

متودهای رشته [String Methods]

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

هر یک از این متودها عملیات خاصی بر روی رشته ها انجام می دهند. دز ادامه به بررسی این متودها و نحوه استفاده از آنها اشاره شده است.

متود ()strip:

این متود هر گونه فضای خالی یا سفید را از ابتدا و انتهای یک رشته حذف میکند. به مثال زیر دقت کنید.

a = "   Gisoomtarh.com   "
print(a.strip())

خروجی کد بالا :

Gisoomtarh.com

در مثال بالا فضای خالی ابتدا و انتهای رشته توسط متود ()strip حذف شده و تابع پرینت باقی رشته را برمی گرداند.

متود ()lower:

این متود تمام کاراکترهای رشته را با فرمت حروف کوچک یا Lower Case تبدیل می کند. برای مثال حرف G تبدیل به حرف g می شود.

a = "Gisoomtarh.COM"
print(a.lower())

نتیجه اجرای کد بالا :

gisoomtarh.com

متود ()upper:

این متود دقیقا برعکس متود lower عمل می کند و کاراکترهای رشته را به حروف بزرگ تبدیل می کند.

a = "gisoomtarh.com"
print(a.upper())

خروجی:

GISOOMTARH.COM

متود ()replace:

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

a = "Gisoomtarh.com"
print(a.replace("tarh", "TARH"))

در خروجی کد بالا قسمت tarh با TARH جایگزین شده است.

یک مثال دیگر:

a = "Gisoomtarh.com"
print(a.replace("tarh", "1234"))

خروجی:

Gisoom1234.com

متود ()split:

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

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

به مثال توجه کنید.

#استفاده از comma برای جدا کننده
a = "Gisoomtarh.com , website , Amoozeshi , ast "
print(a.split(","))
#استفاده از فضای خالی برای جدا کننده
a = "Gisoomtarh.com website Amoozeshi ast "
print(a.split())
#استفاده از اسلش بعنوان جدا کننده
a = "Gisoomtarh.com/website/Amoozeshi/ast "
print(a.split("/"))

خروجی:

['Gisoomtarh.com ', ' website ', ' Amoozeshi ', ' ast ']
['Gisoomtarh.com ', ' website ', ' Amoozeshi ', ' ast ']
['Gisoomtarh.com ', ' website ', ' Amoozeshi ', ' ast ']

در خروجی می بینید که می توان از هر نوع جدا کننده ای برای اینکار استفاده کرد ولی باید حتما نوع آن را در ورودی تابع split مشخص کرد.

پیشنهاد می شود از جدا کننده های معمول مانند (,) یا (/) و یا (\) برای اینکار استفاده کنید. اینکار به خوانایی کدهای نوشته شده کمک می کند.

بررسی در رشته ها

در پایتون برای بررسی اینکه یک عبارت یا کاراکتر خاص در یک رشته وجود دارد از کلیدواژه های in و not in استفاده می شود.

در مثال زیر بررسی می کنیم که آیا عبارت gisoomtarh در رشته مربوطه وجود دارد یا نه:

x = "gisoomtarh.com yek website e amoozeshi ast."
y = "gisoomtarh" in x
print(y)

خروجی:

True

در مثال زیر با استفاده از کلیدواژه های not in بررسی میکنیم که آیا عبارت website در رشته مربوطه وجود دارد یا خیر .

x = "gisoomtarh.com yek website e amoozeshi ast."
y = "website" not in x
print(y)

در مثال بالا موجود نبودن عبارت website در رشته مربوطه بررسی می شود. و چون این عبارت در رشته موجود هست مقدار False در خروجی برگردانده می شود.

False

الحاق رشته ها در پایتون

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

در مثال زیر مقدار دو متغیر a و b  در متغیر c با هم ترکیب شده اند.

a = "gisoom"
b = "tarh"
c = a+b
print(c)

خروجی :

gisoomtarh

برای ایجاد فاصله بین رشته ها از ” “ (کوتیشن با فضای خالی) استفاده می شود.

به مثال زیر زیر توجه کنید.

a = "gisoom"
b = "tarh"
c = a+ " " +b
print(c)

خروجی :

gisoom tarh

ترکیب رشته ها و اعداد در پایتون با [ متود ()Format ]

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

زیرا علامت + بعنوان عنصر محاسباتی عمل کرده در نتیجه در هنگام استفاده از آن برای ترکیب رشته ها و اعداد خطا بروز می کند.

به مثال زیر توجه کنید.

tavalod = 1364
age = "تاریخ تولد : " + tavalod
print(age)

نتیجه اجرای این کد ایجاد خطای TypeError :

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

برای اینکه با این خطا روبرو نشویم باید از متو ()format استفاده کنیم.

متود ()format آرگومان های داده شده را میگیرد ، فرمت می کند و بعد آنها را در رشته درست در جایی که {} یا placeholder  قرار دارد می ریزد.

به مثال زیر توجه کنید.

tavalod = 1364
age = "تاریخ تولد : {}"
print(age.format(tavalod))

خروجی کد بالا:

تاریخ تولد : 1364

همانطور که می بینید متود format به سادگی نوع داده متغیر tavalod را به رشته تبدیل می کند و مقدار آن را در placeholder می ریزد .

در نتیجه خروجی کد بدون ایجاد خطا توسط تابع پرینت چاپ می شود.

توجه : متود ()format محدودیتی برای گرفتن آرگومان ها ندارد . یعنی می توان به هر تعدادی برای آن آرگومان در نظر گرفت. و بعد آرگومان ها را به placeholder های مربوطه معرفی کرد.

به مثال زیر توجه کنید :

sal = 30
mah = 8
rooz = 13
sen = "من {} سال و {} ماه و {} روز سن دارم."
print(sen.format(sal , mah , rooz))

خروجی کد بالا:

من 30 سال و 8 ماه و 13 روز سن دارم.

در مثال بالا متود format مقادیر متغیر های سال ، ماه و روز را به ترتیب در آرگومان های ورودی خود می گیرد. و آنها را به ترتیب در پلیس هولدرهای مربوطه می ریزد.

اولویت انتخاب هر پلیس هولدر به محل قرار گیری آن در رشته بستگی دارد.

مثلا پلیس هولدر اولی مقدار آرگومان sal را در خود جای می دهد. در واقع مقدار آرگومان اول در پلیس هولدر اول ، دوم در دوم  و سوم در پلیس هولدر سوم ریخته می شود.

همچنین می توان از شماره ایندکس یا اندیس برای اطمینان از اینکه مقدار هر آرگومان در placeholder درست ریخته می شود استفاده کرد.

مثال زیر چگونگی استفاده از شماره ایندکس برای معین کردن اینکه مقدار کدام آرگومان در کدام placeholder ریخته شود را نشان می دهد.

sal = 30
mah = 8
rooz = 13
sen = "من {2} روز و {1} ماه و {0} سال سن دارم."
print(sen.format(sal , mah , rooz))

خروجی کد بالا :

من 13 روز و 8 ماه و 30 سال سن دارم.

کاراکترهای فرار در پایتون

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

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

برای اینکه هم بتوانیم از این کاراکترها در رشته استفاده کنیم. و هم با خطای نحوی مواجه نشویم باید از یک سری کاراکترها یا علائم بعنوان کاراکترهای فرار استفاده کنیم.

در واقع کاری که کارکتر فرار انجام می دهد این است که بخش غیر قانونی را به عنوان قسمتی از رشته معرفی می کند و مفسر پایتون با رسیدن به آن آن را قسمتی از کد شناسایی نمی کند.

کارکتر فرار یک بک اسلش \ است که قبل از کاراکتر غیر مجاز قرار می گیرد.

به مثال زیر توجه کنید:

x = " I love rose "Flower" so much."
print(x)

در مثال بالا پایتون اجازه نمی دهد که همزمان از کوتیشن مارک دوتایی در داخل رشته ای که با ;وتیشن دوتایی تنوشته شده است استفاده کنیم. نتیجه اجرای این کد مشاهده خطلای نحوی در خروجی است.

خروجی:

File "<stdin>", line 1
    x = " I love rose "Flower" so much."
                            ^
SyntaxError: invalid syntax

حالا مثال بالا را با قرار دادن کارکتر فرار قبل از کاراکترهای غیر مجاز دوباره اجرا می کنیم .

I love rose "Flower" so much.
 I love rose 'Flower' so much.

خروجی:

 I love rose "Flower" so much.

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

x = ' I love rose \"Flower\" so much.'
print(x)
# یا
x = " I love rose 'Flower' so much."
print(x)
I love rose "Flower" so much.
I love rose 'Flower' so much.

 

 

میثم پورواحدی

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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

دکمه بازگشت به بالا