ممکن است در بعضی از مواقع بخواهید نوع یک متغیر را تغییر دهید. پایتون یک زبان برنامه نویسی شیء گرا است بنابراین با استفاده از کلاس ها data type هایش را مشخص می کند. به همین دلیل casting در پایتون از طریق توابع constructor انجام می شود:
()int
: اگر به این تابع یک literal داده شود (یعنی مقداردهی به صورت دستی انجام شود) از آن یک عدد صحیح می سازد اما اگر به آن یک عدد اعشاری بدهید آن را به سمت پایین گرد کرده و از آن یک عدد صحیح می سازد (مشخصا قسمت اعشار در هنگام گرد کردن حذف می شود). همچنین اگر رشته ای به این تابع داده شود که درون آن فقط عدد باشد، آن رشته را به عدد صحیح تبدیل می کند.()float
: از عدد صحیح یا عدد اعشاری یا یک رشته (در صورتی که فقط شامل عدد باشد) عدد اعشاری می سازد.()str
: از انواع داده های مختلف مانند عدد صحیح، عدد اعشاری و... رشته می سازد.چند مثال برای تابع int
:
x = int(1) y = int(2.8) z = int("3") print(x) print(y) print(z)
خروجی:
1
2
3
چند مثال از تابع float
:
x = float(1) y = float(2.8) z = float("3") w = float("4.2") print(x) print(y) print(z) print(w)
خروجی:
1.0
2.8
3.0
4.2
چند مثال برای تابع str
:
x = str("s1") y = str(2) z = str(3.0) print(x) print(y) print(z)
خروجی:
s1
2
3.0
String literal ها (یعنی رشته هایی که به صورت دستی نوشته شده باشند، نه اینکه حاصل یک عملیات باشند) در زبان پایتون می توانند با استفاده از single quotation یا double quotation تعریف شوند؛ بنابراین 'hello' با "hello" برابر است. برای نمایش این رشته ها می توانیم از تابع همیشگی print استفاده کنیم:
#You can use double or single quotes: print("Hello") print('Hello')
خروجی:
Hello
Hello
انتساب یک رشته به یک متغیر نیز کار بسیار راحتی است:
a = "Hello"
تنها کافی است که نام متغیر را با علامت = به رشته ی خود متصل کنید.
شما می توانید در زبان پایتون از متغیرهای چند خطی استفاده کنید. برای این کار استفاده از علامت """
(سه بار "
) اجباری است. مثال:
a = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.""" print(a)
خروجی:
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
البته تفاوتی ندارد که از """
یا '''
(علامت single quote یا double quote) استفاده کنید.
باید به یاد داشته باشید که مانند بسیاری از زبان های برنامه نویسی دیگر، رشته ها در پایتون آرایه ای از بایت ها هستند که هر کدام نماینده ی یکی از کاراکترهای یونیکد است اما زبان پایتون هیچ data type ای برای تک کاراکترها ندارد بنابراین یک کاراکتر، یک رشته است که طول آن برابر با 1 می باشد. از آنجایی که رشته ها هم به نوعی آرایه هستند می توانید برای دسترسی به کاراکترهای مختلف آن ها از علامت براکت [] استفاده کنید؛ دقیقا مانند اعضای یک آرایه! به مثال زیر توجه کنید:
a = "Hello, World!" print(a[1])
خروجی حرف e خواهد بود. به یاد داشته باشید که index ها از صفر شروع می شوند.
با همین مبنا اگر بخواهید طیفی از کاراکترها را برگردانید، می توانید از نوع نوشتار slice استفاده کنید؛ ابتدا index ابتدایی و سپس index نهایی را ذکر کرده (بین آن ها علامت دو نقطه باشد) سپس آن ها را درون براکت قرار دهید. بدین صورت قسمت مورد نظر شما جدا خواهد شد. به طور مثال در کد زیر می خواهیم کاراکترهای 2 تا 5 (خود 5 محاسبه نمی شود) را برگردانیم:
b = "Hello, World!" print(b[2:5])
خروجی مقدار llo
خواهد بود.
اگر مقدار index ابتدایی و انتهایی را به صورت عدد منفی بدهید، جداسازی از آخر رشته به اول آن صورت می گیرد. به طور مثال در کد زیر از کاراکتر 5 تا 1 را می خواهیم برگردانیم اما چون اعداد را منفی داده ایم شمارش از انتهای رشته شروع خواهد شد:
b = "Hello, World!" print(b[-5:-2])
خروجی orl
خواهد بود.
برای به دست آوردن طول رشته نیز میتوانید از تابع ()len
استفاده کنید:
a = "Hello, World!" print(len(a))
خروجی عدد 13 خواهد بود.
زبان پایتون مانند زبان های دیگر برنامه نویسی دارای متدهایی برای کار با رشته ها است. معروف ترین و پر استفاده ترین آن ها عبارتند از:
()strip
()lower
()upper
()replace
تابع ()strip
برای هر گونه فضای خالی (اسپیس) را از ابتدا یا انتهای رشته حذف می کند:
a = " Hello, World! " print(a.strip())
خروجی !Hello, World
(بدون هیچ اسپیسی در ابتدا یا انتها) خواهد بود.
تابع ()lower
رشته را با حروف کوچک برمی گرداند:
a = "Hello, World!" print(a.lower())
خروجی !hello, world
خواهد بود (حروف W و H کوچک شده اند).
تابع ()upper
دقیقا برعکس ()lower
عمل می کند بنابراین:
a = "Hello, World!" print(a.upper())
خروجی !HELLO, WORLD
خواهد بود.
تابع ()replace
یک رشته را به یک رشته ی دیگر تعویض می کند. مثال:
a = "Hello, World!" print(a.replace("H", "J"))
خروجی !Jello, World
خواهد بود.
تابع ()split
نیز یک جدا کننده می گیرد و اگر این جداکننده را در رشته ی مورد نظر پیدا کند، آن رشته را از همانجا تقسیم می کند:
a = "Hello, World!" b = a.split(",") print(b)
خروجی به شکل زیر خواهد بود:
['Hello', ' World!']
اگر بخواهیم بررسی کنیم که آیا یک کاراکتر یا رشته ی خاص درون یک رشته ی دیگر است، می توانیم از کلیدواژه های in و not in استفاده کنیم. به مثال های زیر دقت کنید:
txt = "The rain in Spain stays mainly in the plain" x = "ain" in txt print(x)
خروجی این کد true خواهد بود. چرا؟ ما گفته ایم آیا "ain" درون متغیر txt وجود دارد یا خیر. جواب قطعا بله است (در کلمه ی plain).
مثال بعدی:
txt = "The rain in Spain stays mainly in the plain" x = "ain" not in txt print(x)
خروجی این کد false خواهد بود. در این مثال دقیقا برعکس سوال بالا را پرسیده ایم (استفاده از not in).
برای متصل کردن رشته ها به هم باید از اپراتور +
استفاده کنید:
a = "Hello" b = "World" c = a + b print(c)
خروجی عبارت HelloWorld خواهد بود. توجه کنید که بین hello و world هیچ اسپیسی وجود ندارد. اگر بخواهیم بین آن ها فاصله بیندازیم باید کد را به شکل زیر بنویسیم:
a = "Hello" b = "World" c = a + " " + b print(c)
خروجی عبارت Hello World (با فاصله) خواهد بود.
هشدار: یادتان باشد که شما اجازه ندارید رشته ها و اعداد را با اپراتور + به هم متصل کنید.
age = 36 txt = "My name is John, I am " + age print(txt)
کد بالا کاملا اشتباه است. بنابراین در جواب با خطایی شبیه به خطای زیر روبرو خواهید شد:
C:\Users\My Name>python demo_string_format_error.py
Traceback (most recent call last):
File "demo_string_format_error.py", line 2, in <module>
txt = "My name is John, I am " + age
TypeError: must be str, not int
اگر نیاز دارید که رشته ها و اعداد را به هم متصل کنید، بهتر است از متد ()format
استفاده کنید. این تابع آرگومان های ارسالی را گرفته، آن ها را تبدیل به رشته کرده و به هم میچسباند و در آخر به جای {}
قرار میدهد. مثال:
age = 36 txt = "My name is John, and I am {}" print(txt.format(age))
خروجی کد بالا عبارت زیر است:
My name is John, and I am 36
شما می توانید به تعداد نامحدودی آرگومان به تابع ()format
بدهید؛ این تابع آرگومان های پاس داده شده را به ترتیب به جای علامت های {}
قرار می دهد. مشخصا شما مکان این علامت ها را تعیین می کنید:
quantity = 3 itemno = 567 price = 49.95 myorder = "I want {} pieces of item {} for {} dollars." print(myorder.format(quantity, itemno, price))
خروجی جمله ی زیر خواهد بود:
I want 3 pieces of item 567 for 49.95 dollars.
برای اطمینان پیدا کردن از قرارگیری صحیح آرگومان ها در {}
های مناسب می توانید از index آرگومان ها نیز استفاده کنید:
quantity = 3 itemno = 567 price = 49.95 myorder = "I want to pay {2} dollars for {0} pieces of item {1}." print(myorder.format(quantity, itemno, price))
بدین ترتیب میتوانید دقیقا ترتیب هر کدام از آرگومان ها را خودتان تعیین کنید.
نکته: تمام متدهای کار با رشته در پایتون یک مقدار جدید ساخته و مقدار اصلی را تغییر نمی دهند.
تعداد متدهای کار با رشته ها در پایتون بسیار زیاد است. بنابراین نمی توانیم تمام آن ها را در این مقاله بگنجانیم. در صورت علاقه به مطالعه ی بیشتر به دو منبع زیر سری بزنید:
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.