رشته ها در پایتون
رشته ها (strings) یکی از محبوب ترین نوع داده در زبان برنامه نویسی پایتون می باشد. به راحتی می توان با قرار دادن کاراکتر ها بین دو علامت نقل قول یک رشته ایجاد کرد. در زبان پایتون هم از (“) و هم از (‘) برای مشخص کردن رشته ها استفاده می شود. برای نمونه:
1 2 | var1 = 'Hello World!' var2 = "Python Programming" |
دسترسی به مقدار یک رشته
در زبان برنامه نویسی پایتون نوع داده character وجود ندارد و پایتون این مقادیر را به عنوان رشته ای به طول 1 در نظر می گیرد. از این می توان آن ها را به عنوان یک زیر رشته (substring) نیز در نظر گرفت.
برای دسترسی به زیر رشته ها، از ([]) به همراه دو اندیس شروع و پایان استفاده می شود. مثال زیر نحوه استخراج زیر رشته را نشان می دهد:
1 2 3 4 5 | #!/usr/bin/python var1 = 'Hello World!' var2 = "Python Programming" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5] |
زمانی که کد بالا اجرا شود، نتیجه زیر را تولید می کند:
1 2 | var1[0]: H var2[1:5]: ytho |
به روز رسانی یک متغیر رشته ای
در پایتون زمانی که یک متغیر دوباره مقدار دهی شود، می گویند، به روز شده است. مقدار جدید می توانید مرتبط با مقدار قبلی باشد که کلا یک مقدار جدید متقاوت باشد. برای مثال:
1 2 3 | #!/usr/bin/python var1 = 'Hello World!' print "Updated String :- ", var1[:6] + 'Python' |
زمانی که کد بالا اجرا شود، نتیجه زیر را تولید می کند:
1 | Updated String :- Hello Python |
کاراکترهای کنترلی در پایتون
جدول زیر لیست کاراکترهای کنترلی و غیر قابل چاپ موجود در زبان برنامه نویسی پایتون را نشان می دهد که می توان با یک علامت () آن ها نشان داد.
نشانه گذاری بک اسلش | کاراکتر هگزادسیمال | توضیحات |
a | 0x07 | Bell or alert |
b | 0x08 | Backspace |
cx | Control-x | |
C-x | Control-x | |
e | 0x1b | Escape |
f | 0x0c | Formfeed |
M-C-x | Meta-Control-x | |
n | 0x0a | Newline |
nnn | Octal notation, where n is in the range 0.7 | |
r | 0x0d | Carriage return |
s | 0x20 | Space |
t | 0x09 | Tab |
v | 0x0b | Vertical tab |
x | Character x | |
xnn | Hexadecimal notation, where n is in the range 0.9, a.f, or A.F |
عملگرهای مخصوص رشته
فرض کنید متغیر a مقدار ‘Hello’ و متغیر b مقدار ‘Python’ را در خود ذخیره کرده است:
عملگر | توضیحات | مثال |
+ | اتصال – رشته سمت راست را به انتهای رشته سمت چپ اضافه می کند. | a + b نتیجه HelloPython |
* | تکرار – با ترکیب یک رشته با خودش، رشته جدید ایجاد می کند. | a * b نتیجه HelloHello |
[] | برش – یک کاراکتر را بر اساس اندیس داده شده برمی گرداند. | a[1] نتیجه e |
[ : ] | برش در رنج مشخص – کاراکتر های موجود در رنج داده شده را برمی گرداند. | a[1:4] نتیجه ell |
in | عضویت – اگر یک کاراکتر در رشته مشخص شده وجود داشته باشد، مقدار true برمی گرداند. | H in a نتیجه 1 |
not in | عضویت – اگر یک کاراکتر در رشته مشخص شده وجود نداشته داشته باشد، مقدار true برمی گرداند. | M not in a نتیجه 1 |
r/R | رشته خام (Raw String) – معنای اصلی کاراکتر کنترلی را لغو می کند. Syntax استفاده از رشته خام دقیقا شبیه به رشته معمولی است است به استثنای این که نشانه رشته خام یعنی r باید قبل از علامت نقل قول قرار گیرد. | print r’n’ نتیجه n print R’n’ نتیجه n |
% | برای فرمت بندی رشته ها استفاده می شود. | بخش بعدی را ببینید |
عملگر فرمت بندی رشته
یکی از ویژگی های جالب زبان برنامه نویسی پایتون عملگر % می باشد که به منظور فرمت بندی رشته ها به کار می رود و مخصوص کار با رشته ها می باشد. این عملگر به عنوان جایگزینی برای خانواده توابع printf() در زبان برنامه نویسی C محسوب می شود.
مثال زیر نحوه استفاده از این عملگر را نشان می دهد:
1 2 | #!/usr/bin/python print "My name is %s and weight is %d kg!" % ('Zara', 21) |
زمانی که کد بالا اجرا شود، نتیجه زیر را تولید می کند:
1 | 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 |
سایر نمادهای پشتیبانی شده را در جدول زیر مشاهده می کنید:
نماد | عملکرد |
* | دقت عدد اعشاری را مشخص می کند. |
– | تنظیم به سمت چپ |
+ | نمایش علامت |
یک فضای خالی قبل از عدد صحیح مثبت قرار می دهد | |
# | صفر آغازین در مبنای هشت (‘0’) یا صفر آغازین در مبنای شانزده (‘0x’ یا ‘0X’) اضافه می کند |
0 | به جای فضای خالی مقدار صفر قرار می دهد |
% | برای چاپ علامت % استفاده می شود |
(var) | نگاشت متغیر (آرگومان های dictionary) |
m.n. | m حداقل عدد مجاز و n تعداد عددی است که باید پس از نقطه اعشار نمایش داده شود را مشخص می کند |
علامت نقل قول سه گانه (Triple Qoute)
با استفاده از علامت نقل قول سه گانه (“””) می توانید رشته ها را در چند خط به همراه انواع کاراکترهای ویژه (مانند n tab و غیره) بنویسید. این علامت شبیه به علامت @ در زبان برنامه نویسی سی شارپ می باشد.
نحو استفاده از این علامت را در مثال زیر مشاهده می کنید:
1 2 3 4 5 6 7 8 9 | #!/usr/bin/python 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 |
زمانی که کد بالا اجرا شود، نتیجه زیر را تولید می کند:
1 2 3 4 5 6 7 | 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) به عنوان یک کاراکتر ویژه در نظر گرفته نمی شود. و هر کاراکتری که درون یک رشته خام قرار می گیرد به همان صورت نیز چاپ می شود.
1 2 | #!/usr/bin/python print 'C:nowhere' |
نتیجه:
1 | C:nowhere |
حالا مثال بالا را به صورت رشته خام بنویسید:
1 2 | #!/usr/bin/python print r'C:nowhere' |
نتیجه:
1 | C:nowhere |
رشته یونیکد (Unicode string)
در زبان برنامه نویسی پایتون رشته ها در حالت عادی به صورت کدهای اسکی هشت بیتی ذخیره می شوند. در حالی که در شته های یونیکد به صورت یونیکد شانزده بیتی ذخیره می شوند. این موضوع باعث می شود تا بتوان از مجموعه کاراکترهای مختلف و کاراکترهای ویژه موجود در اکثر زبان ها استفاده کرد.
به مثال زیر توجه کنید:
1 2 | #!/usr/bin/python print u'Hello, world!' |
زمانی که کد بالا اجرا شود، نتیجه زیر را تولید می کند:
1 | Hello, world! |
همان طور که مشاهده می کنید، برای رشته های یونیکد حرف ‘u’ را در ابتدا رشته و قبل از علامت نقل قول قرار می دهیم مانند رشته های خام که از ‘r’ استفاده کردیم.
متدهای درون ساخت مخصوص رشته ها (Built-in String Methods)
زبان برنامه نویسی پایتون از متدهای پیش ساخته زیر برای دستکاری رشته ها پشتیبانی می کند:
ردیف | متد و توضیحات |
1 | تابع capitalize حرف اول رشته را به حرف بزرگ تبدیل می کند. |
2 | center(width, fillchar) این تابع دو ورودی می گیرد که اولی طول رشته و دومی کاراکتری که باید اطراف رشته با آن پر شود، را مشخص می کند. سپس رشته را در وسط یا مرکز قرار می دهد. |
3 | تابع count(str, beg= 0,end=len(string)) تعداد تکرار اولین ورودی را در رنج مشخص شده برمرگرداند. |
4 | تابع decode(encoding=’UTF-8′,errors=’strict’) رشته را با استفاده از کدک یا الگوریتم رمزگذاری ثبت شده، رمزگشایی می کند. |
5 | تابع encode(encoding=’UTF-8′,errors=’strict’) رشته را با توجه به الگوریتم رمزگذاری مشخص شده، رمزگذاری می کند. |
6 | تابع endswith(suffix, beg=0, end=len(string)) بررسی می کند که رشته یا زیر رشته، به مقدار اولین ورودی (suffix) ختم می شود یا خیر. مقدار بازگشتی از نوع بولی است. |
7 | تابع expandtabs(tabsize=8) تعداد تب های موجود در رشته را با توجه اندازه مشخص شده در اولین ورودی، برمی گرداند. به صورت پیشفرض مقدار 8 برای ورودی در نظر گرفته می شود. |
8 | تابع find(str, beg=0 end=len(string)) مقدار اولین ورودی را با توجه رنج مشخص شده، درون رشته جستجو می کند و اگر پیدا شود، اندیس اولین حرف و در صورت پیدا نشدن مقدار -1 را برمی گرداند. |
9 | تابع index(str, beg=0, end=len(string)) شبیه متد find می باشد با این تفاوت که اگر رشته مورد جستجو پیدا نشود، باعث بروز خطا می شود. |
10 | تابع isalnum اگر حداقل یک یا تمامی کاراکتر های رشته، به صورت حروف الفبا یا عدد باشد، مقدار true در غیر این صورت مقدار false برمی گرداند. |
11 | تابع isalpha اگر حداقل یک یا تمامی کاراکتر های رشته، به صورت حروف الفبا باشد، مقدار true در غیر این صورت مقدار false برمی گرداند. |
12 | تابع isdigit اگر رشته فقط شامل اعداد باشد، مقدار true و در غیر این صورت مقدار false برمی گرداند. |
13 | تابع islower اگر حداقل یک یا تمامی کاراکتر های رشته، به صورت حروف کوچک باشد، مقدار true در غیر این صورت مقدار false برمی گرداند. |
14 | تابع isnumeric اگر رشته یونیکد شامل کاراکترهای عددی باشد، مقدار true و در غیر این صورت مقدار false برمی گرداند. |
15 | تابع isspace اگر رشته فقط شامل فضای خالی (space) باشد، مقدار true و در غیر این صورت مقدار false برمی گرداند. |
16 | تابع istitle اگر حرف اول همه کلمات رشته به با حرف بزرگ باشد، مقدار true و در غیر این صورت مقدار false برمی گرداند. |
17 | تابع isupper اگر تمامی کاراکتر های رشته، به صورت حروف بزرگ باشد، مقدار true در غیر این صورت مقدار false برمی گرداند. |
18 | تابع join(seq) عناصر رشته seq را به وسیله رشته جدا کننده به هم متصل می کند. |
19 | تابع len(string) طول رشته را برمی گرداند. |
20 | تابع ljust(width[, fillchar]) با کاراکتر تعریف شده در ورودی دوم رشته را از سمت راست پر می کند تا به تعداد کاراکتر تعریف شده در ورودی اول برسد. |
21 | تابع lower همه حروف بزرگ موجود در رشته را به حروف کوچک تبدیل می کند. |
22 | تابع lstrip همه کاراکتر فضای خالی موجود در رشته را حذف می کند. |
23 | تابع maketrans یک جدول ترجمه را برای تابع translate برمی گرداند. |
24 | تابع max(str) بزرگترین کاراکتر موجود در رشته را بر اساس حروف الفبا برمی گرداند. |
25 | تابع min(str) کوچکترین کاراکتر موجود در رشته را بر اساس حروف الفبا برمی گرداند. |
26 | تابع replace(old, new [, max]) مقدار ورودی اول را با مقدار ورودی دوم جایگزین می کند. ورودی سوم تعداد جایگزین کردن را مشخص می کند. |
27 | تابع rfind(str, beg=0,end=len(string)) شبیه متد find می باشد با این تفاوت که جستجو را از سمت راست شروع می کند. |
28 | تابع rindex( str, beg=0, end=len(string)) شبیه متد index می باشد با این تفاوت که جستجو را از سمت راست شروع می کند. |
29 | تابع rjust(width,[, fillchar]) با کاراکتر تعریف شده در ورودی دوم رشته را از سمت چپ پر می کند تا به تعداد کاراکتر تعریف شده در ورودی اول برسد. |
30 | تابع rstrip تمامی کاراکتر فضای خالی را از انتهای رشته حذف می کند. |
31 | تابع split(str=””, num=string.count(str)) رشته را با توجه به کاراکتر جدا کننده رشته های کوچک تبدیل می کند و به صورت لیست برمی گرداند. |
32 | تابع splitlines( num=string.count(‘n’)) رشته را بر اساس کاراکتر NEWLINE به رشته های کوچکتر تبدیل می کند. |
33 | تابع startswith(str, beg=0,end=len(string)) بررسی می کند که آیا رشته با ورودی اول (str) آغاز شده است یا خیر. اگر چنین بود مقدار true و در غیر این صورت مقدار false را برمی گرداند. |
34 | تابع strip([chars]) عملیات هر دو متد lstrip و rstrip را بر روی رشته انجام می دهد. |
35 | تابع swapcase عملکردی مشابه با عملگر نقیض دارد. یعنی تمام حروف بزرگ را به حروف کوچک و تمام حروف کوچک را به حروف بزرگ تبدیل می کند. |
36 | تابع title یک نسخه از رشته را به صورت “titlecase” برمی گرداند. یعنی کاراکار اول همه کلمات با حرف بزرگ نوشته می شوند. |
37 | تابع translate(table, deletechars=””) رشته را با توجه به جدول ترجمه (256 chars)، ترجمه می کند و آن ها را در رشته del حذف می کند. |
38 | تابع upper همه حروف کوچک موجود در رشته را به حروف بزرگ تبدیل می کند. |
39 | تابع zfill (width) یک کپی از رشته برمی گرداند که سمت چپ آن با صفر پر شده تا طول نهایی رشته با طول مشخص شده در پارامتر width برابر شود. |
40 | تابع isdecimal اگر رشته یونیکد شامل کاراکترهای دسیمال باشد، مقدار true و در غیر این صورت مقدار false برمی گرداند. |
هیچ نظری ثبت نشده است