شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش پایتون - رشته‌ها

رشته‌ها از جمله انواع داده محبوب و پرکاربرد در پایتون هستند. ما می‌توانیم آنها را به سادگی با قرار دادن کاراکترها در داخل نقل قول‌ها  تکی(' ')و دوتایی(" ") ایجاد کنیم. ایجاد رشته‌ها به همان سادگی انجام می‌شود که یک مقدار را به یک متغیر اختصاص دهیم. به عنوان مثال :

var1 = 'Hello World!'
var2 = "Python Programming"

دسترسی به مقادیر رشته‌ها

پایتون  نوع داده کاراکتر را پشتیبانی نمی‌کند؛ بنابراین آنها به عنوان رشته‌هایی با طول یک، و در نتیجه یک زیررشته نیز در نظر گرفته می‌شوند.

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

به عنوان مثال :

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

هنگام اجرای کد بالا، نتیجه زیر تولید می‌شود −

var1[0]:  H
var2[1:5]:  ytho

به‌روزرسانی رشته‌ها

شما می‌توانید یک رشته موجود را با اختصاص مجدد یک متغیر به یک رشته دیگر به‌روزرسانی کنید. مقدار جدید می‌تواند به مقدار قبلی مرتبط باشد یا به طور کاملاً متفاوت با رشته قبلی باشد. به عنوان مثال −

var1 = 'Hello World!'
print "Updated String :- ", var1[:6] + 'Python'

زمانی که کد بالا اجرا می‌شود، نتیجه زیر تولید می‌شود −

Updated String :-  Hello Python

کاراکترهای گریز

جدول زیر فهرستی از کاراکترهای گریز یا غیرقابل چاپ را که می‌توان با نمایش با علامت بک‌اسلش ("backslash notation") نمایش داد، نشان می‌دهد.

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

نمایش با علامت برگشت کاراکتر شمارنده هگزا دسیمال توضیحات
b\ 0x08 بازگشت به عقب (Backspace)
n\ 0x0a خط جدید (Newline)
r\ 0x0d رفتن به ابتدای خط (Carriage return)
s\ 0x20 فضا (Space)
t\ 0x09 تب (Tab)
v\ 0x0b تب عمودی (Vertical tab)

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

فرض کنید متغیر رشته‌ای a دارای مقدار 'hello' باشد و متغیر b دارای مقدار 'python' باشد، آنگاه −

عملگر توضیحات مثال
+ اتصال - مقادیر دو طرف عملگر را به هم متصل می کند a + b مقدار hellopython را خواهد داد
* تکرار - رشته‌های جدیدی ایجاد می‌کند که چندین نسخه از رشته یکسان را به صورت پشت سر هم اضافه می‌کند a*2 مقدار -hellohello- را خواهد داد
[] برش - کاراکتر موجود در شاخص یا اندیس داده شده را برمی‌گرداند a[1] مقدار e را خواهد داد
[ : ] برش محدوده - کاراکترهای موجود در محدوده داده شده را برمی‌گرداند a[1:4] مقدار ell را خواهد داد
in عضویت - اگر یک کاراکتر در رشته داده شده وجود داشته باشد، True برمی‌گرداند H in a مقدار 1 را خواهد داد
not in عدم عضویت - اگر یک کاراکتر در رشته داده شده وجود نداشته باشد، True برمی‌گرداند M not in a مقدار 1 را خواهد داد
r/R رشته خام - در این حالت r باید بلافاصله قبل از نقل قول اول قرار بگیرد و کاراکترهای گریز را غیرفعال می کند print r'\n' در خروجی n\ را چاپ می‌کند
% فرمت‌بندی - عملیات فرمت‌بندی را انجام می‌دهد به بخش بعدی مراجعه کنید

عملگر فرمت‌بندی رشته 

یکی از قابلیت‌های جذاب Python عملگر فرمت‌بندی رشته با علامت % است. این عملگر منحصر به رشته‌هاست. مثالی ساده در زیر آورده شده است −

print("My name is %s and weight is %d kg!" % ('Tut', 21))

هنگام اجرای کد بالا، نتیجه زیر را تولید می‌کند −

My name is Zara and weight is 21 kg!

در ادامه لیستی از مجموعه کاملی از نمادهایی که همراه با % می‌توانند استفاده شوند آمده است −

نماد فرمت تبدیل
c% کاراکتر
s% تبدیل رشته با استفاده از تابع str() قبل از فرمت‌بندی
i% عدد صحیح (با علامت)
d% عدد صحیح (با علامت)
u% عدد صحیح بدون علامت
o% عدد هشت‌گانه
x% عدد شانزده‌گانه (حروف کوچک)
X% عدد شانزده‌گانه (حروف بزرگ)
e% نمایش عدد به صورت علمی (با 'e' کوچک)
E% نمایش عدد به صورت علمی (با 'E' بزرگ)
f% عدد اعشاری
g% کوتاه‌ترین مقدار بین %f و %e
G% کوتاه‌ترین مقدار بین %f و %E

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

نماد قابلیت
* عرض یا دقت را تعیین می‌کند
- تراز چپ
+ نمایش علامت
<sp> افزودن یک فاصله خالی قبل از عدد مثبت
# اضافه کردن صفر قبل از عدد هشت‌گانه ('0') یا صفر قبل از عدد شانزده‌گانه ('0x' یا '0X')، بسته به اینکه 'x' یا 'X' استفاده شده باشد.
0 پر کردن از سمت چپ با صفر (به جای فاصله)
% '%%' باقی می‌ماند و باعث تولید یک علامت درصد واحد می‌شود
(var) متغیر تطبیقی (ارسال آرگومان‌های دیکشنری)
m.n. m عرض کل حداقل و n تعداد ارقام نمایشی بعد از نقطه اعشار (در صورت اعمال)

استفاده از نقل قول سه‌گانه

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

در نحوه نوشتن نقل قول‌های سه‌گانه، از سه تا نقل قول تکی یا دوتایی می توان استفاده کرد

para_str = """this is a long string that is made up of
several lines and non-printable characters such as
TAB ( \t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ \n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print(para_str)

وقتی کد بالا اجرا می‌شود، نتیجه زیر را تولید می‌کند. توجه کنید که تمامی نمادهای خاص به شکل چاپی خود تبدیل شده‌اند

this is a long string that is made up of
several lines and non-printable characters such as
TAB (    ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
 ], or just a NEWLINE within
the variable assignment will also show up.

رشته‌های خام (Raw strings) هیچ‌گونه گریز(escape) از خود علامت گریز را در نظر نمی‌گیرند. هر کاراکتری که در یک رشته خام قرار دهید، به همان شکلی که نوشته‌اید باقی می‌ماند −

print 'C:\\nowhere'

وقتی کد بالا اجرا می‌شود، نتیجه زیر را تولید می‌کند −

C:\nowhere

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

print r'C:\\nowhere'

وقتی کد بالا اجرا می‌شود، نتیجه زیر را تولید می‌کند −

C:\\nowhere

رشته‌ی یونیکد

رشته‌های عادی در پایتون به صورت پیشفرض به عنوان 8 بیت ASCII ذخیره می‌شوند، در حالی که رشته‌های یونیکد به صورت 16 بیت یونیکد ذخیره می‌شوند. این موضوع ، امکان را برای مجموعه‌ای متنوع‌تر از کاراکترها ،از جمله کاراکترهای ویژه‌ای از اکثر زبان‌ها در دنیا فراهم می‌کند.

print u'Hello, world!'

وقتی کد فوق اجرا می‌شود، نتیجه زیر تولید می‌شود −

Hello, world!

همانطور که می‌بینید، رشته‌های یونیکد از پیشوند u استفاده می‌کنند، همانطور که رشته‌های خام از پیشوند r استفاده می‌کنند.

متدهای تعبیه شده رشته

پایتون شامل متدهای تعبیه شده زیر برای انجام عملیات بر روی رشته‌ها است −

شماره متدها به همراه توضیحات
۱ capitalize()

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

۲ center(width, fillchar)

رشته اصلی را به طول width که فاصله به آن افزوده شده باشد میان‌چین می‌کند.

۳ count(str, beg=0,end=len(string))

تعداد بارهایی که رشته str در رشته یا در زیررشته‌ای از رشته وجود دارد را محاسبه می‌کند؛ اگر شاخص شروع beg و شاخص پایان end داده شوند.

۴ decode(encoding='UTF-8',errors='strict')

رشته را با استفاده از رمزگذاری مشخص شده برای encoding رمزگشایی می‌کند

۵ encode(encoding='UTF-8',errors='strict')

نسخه رمزگذاری شده رشته را برمی‌گرداند؛ در صورت بروز خطا، پیش‌فرض این است که یک ValueError ایجاد شود

۶ endswith(suffix, beg=0, end=len(string))

تشخیص می‌دهد آیا رشته یا یک زیررشته از رشته با پسوند suffix پایان می‌یابد؛ اگر بله، true برمی‌گرداند و در غیر این صورت false.

۷ expandtabs(tabsize=8)

تب‌ها را در رشته به چندین فاصله گسترش می‌دهد؛ پیش‌فرض هر تب 8 فاصله است اگر tabsize مشخص نشده باشد.

۸ find(str, beg=0 end=len(string))

تشخیص می‌دهد آیا رشته str در رشته یا یک زیررشته از رشته وجود دارد و اگر وجود داشت، شاخص را برمی‌گرداند و در غیر این صورت -1.

۹ index(str, beg=0, end=len(string))

همانند find() است، اما در صورت عدم یافتن رشته str استثنا ایجاد می‌شود.

۱۰ isalnum()

true را برمی‌گرداند اگر رشته حداقل یک حرف داشته باشد و تمام حروف عددی و حرفی باشد و در غیر این صورت false.

۱۱ isalpha()

true را برمی‌گرداند اگر رشته حداقل یک حرف داشته باشد و تمام حروف حرفی باشد و در غیر این صورت false.

۱۲ isdigit()

true را برمی‌گرداند اگر رشته فقط شامل اعداد باشد و در غیر این صورت false.

۱۳ islower()

true را برمی‌گرداند اگر رشته حداقل یک حرف دارد و تمام حروف بزرگ و کوچک در آن کوچک باشند و در غیر این صورت false.

۱۴ isnumeric()

true را برمی‌گرداند اگر یک رشته یونیکد فقط شامل اعداد باشد و در غیر این صورت false.

۱۵ isspace()

true را برمی‌گرداند اگر رشته فقط شامل کاراکترهای فاصله باشد و در غیر این صورت false.

۱۶ istitle()

true را برمی‌گرداند اگر رشته به درستی "titlecased" شده باشد و در غیر این صورت false.

۱۷ isupper()

true را برمی‌گرداند اگر رشته حداقل یک حرف دارد و تمام حروف در آن بزرگ باشند و در غیر این صورت false.

۱۸ join(seq)

رشته‌های نمایش داده‌شده از عناصر دنباله seq را با یک رشته ادغام می‌کند

۱۹ len(string)

طول رشته را برمی‌گرداند.

۲۰ ljust(width[, fillchar])

رشته‌ای با فضاهای اضافی از چپ به تعداد ستون‌های width بازگردانده می‌شود

۲۱ lower()

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

۲۲ lstrip()

تمام فاصله‌های ابتدایی رشته را حذف می‌کند

۲۳ maketrans()

جدول ترجمه‌ای را برای استفاده در تابع ترجمه برمی‌گرداند.

۲۴ max(str)

بزرگترین حرف الفبایی را از رشته str بازمی‌گرداند.

۲۵ min(str)

کوچکترین حرف الفبایی را از رشته str بازمی‌گرداند.

۲۶ replace(old, new [, max])

تمام وقوع‌های رشته old را با رشته new در رشته اصلی جایگزین می‌کند (اگر max مشخص شده باشد، حداکثر max بار انجام می‌شود).

۲۷ rfind(str, beg=0,end=len(string))

همانند find() است، اما به جستجوی را از راست شروع می‌کند.

۲۸ rindex( str, beg=0, end=len(string))

همانند index() است، اما به جستجو را از راست شروع می‌کند.

۲۹ rjust(width,[, fillchar])

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

۳۰ rstrip()

تمام فاصله‌های پایانی رشته را حذف می‌کند.

۳۱ split(str="", num=string.count(str))

رشته را با استفاده از رشته جداکننده str تقسیم می‌کند و لیستی از زیررشته‌ها را برمی‌گرداند. اگر مقدار num مشخص شده باشد، حداکثر num - 1 عنصر برگردانده می‌شود.

۳۲ splitlines( num=string.count('\n'))

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

۳۳ startswith(str, beg=0,end=len(string))

تشخیص می‌دهد آیا رشته یا یک زیررشته از رشته با رشته str شروع می‌شود (اگر شاخص شروع beg و شاخص پایان end داده شوند) و اگر شروع می‌شود، true و در غیر این صورت false.

۳۴ strip([chars])

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

۳۵ swapcase()

حروف بزرگ را به حروف کوچک و حروف کوچک را به حروف بزرگ تبدیل می‌کند.

۳۶ title()

رشته را به فرمت عنوان تغییر می‌دهد، به این معنی که هر کلمه با حرف بزرگ شروع می‌شود.

۳۷ translate(table, del="")

تمام حروف رشته را به حروفی معین ترجمه می‌کند (بدون پارامتر del، حروفی حذف نمی‌شوند).

۳۸ upper()

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

۳۹ zfill (width)

تمام اعداد رشته را با صفرها تا رسیدن به عرض width پر می‌کند. علائم + یا - به اعداد اضافه می‌شوند.

40 isdecimal()

با دریافت یک رشته یونیکد، اگر تمام کاراکترهای رشته اعداد اعشاری باشند، مقدار صحیح (True) را برمی‌گرداند و در غیر این صورت مقدار غلط (False) را برمی‌گرداند.