آشنایی با رشته در پایتون
رشته (string) دنبالهای از کاراکترهای تغییرناپذیر است که در برنامهنویسی بسیار پر کاربرد است.
به سه شکل میتوان رشتهها را تعریف کرد، با استفاده از single quotes ،double quotes و یک شیوه ی مرسوم تر به خصوص برای متنهای طولانی استفاده از triple quoted است.
تمام کدهای نوشته شده در این مقاله با پایتون 3.5 است.
var1 = "this is a string" var2 = 'this is a string' var3 = """multi line codes we should use three double quote""" print(var3) """output: multi line codes we should use three double quote """
عملیاتی که میتوان روی رشتهها انجام داد
میتوان رشتهها را به هم متصل کرد:
var1 = "zero" var2 = "hero" var3 = var1 + " to " + var2 print(var3) # output: zero to hero
و یا رشتهای را در عددی ضرب کرد :
var1 = "python" * 3 print(var1) # output: pythonpythonpython
متدهای از پیش تعیین شدهی رشتهها
چندین متد از پیش تعیین شده را در این مقاله خواهیم دید که به راحتی میتوانند تغییراتی در رشتهها ایجاد کنند.
-
len
برای نشان دادن طول رشتهها، لیستها، tuple و دیکشنری استفاده میشود.
var1 = "zero to hero" print("the length of this string is ", len(var1)) # 12 output: the length of this string is
-
upper
این متد تمام کاراکترها را به حروف بزرگ تبدیل میکند.
S = "Converts Lowercase Letters In String To Uppercase" print(S.upper()) # output: CONVERTS LOWERCASE LETTERS IN STRING TO UPPERCASE
-
lower
تمام کاراکترها را به حروف کوچک تبدیل میکند.
S = "Converts UPPERCASE Letters In String To Lowercase" print(S.lower()) # output: converts uppercase letters in string to lowercase
-
count
تعداد کاراکتر مشخصی را که در رشتهی مورد نظر تکرار شده است، میشمارد. آرگومان ورودی این متد زیر رشتهای است که میخواهیم دفعات تکرار آن را پیدا کنیم.
S = "returns the number of occurrences of substring" substring = "n" print("the number of 'n' in this string is: " , S.count(substring)) # output: the number of 'n' in this string is: 4
-
encode و decode
این متد، رمزگذاری و رمزگشایی داده ها را همانطور که در RFC 3548 مشخص شده، فراهم میکند. این استاندارد الگوریتم های Base16 ،Base32 و Base64 را برای رمزگذاری و رمزگشایی رشته های دودویی به رشته های متنی را تعریف میکند که می توانند با امنیت بالا از طریق ایمیل ارسال شوند. در پایتون 3 به بعد نحوهی استفاده از این دو متد تا حدودی متفاوت شده است. ابتدا باید رشته به UTF-8 رمزگذاری شود سپس برای اینکه بخواهیم آنرا به base64 رمزگذاری کنیم باید به عنوان ascii رمزگشایی شود. برای مثال:
import base64 print(base64.urlsafe_b64encode('hello this is a string'.encode('UTF-8')).decode('ascii')) # output: aGVsbG8gdGhpcyBpcyBhIHN0cmluZw==
-
endswith
با خروجی true یا false مشخص میکند که زیر رشتهای در آخر رشتهی مورد نظر قرار دارد یا خیر.
S = "true if the string ends with the specified suffix,therwise false" suffix = "false" print(S.endswith(suffix)) # output: True
-
find
زمانی استفاده میشود که بخواهیم مکان زیر رشته را پیدا کنیم. در صورت عدم وجود، عدد 1- را بازمیگرداند. برای بررسی وجود یک زیر رشته میتوان از اپراتور in نیز استفاده کرد.
S = "this method return index if found and -1 otherwise" S1 = "index" S2 = "with" print(S.find(S1)) print(S.find(S2)) print(S1 in S) print(S2 in S) """ output: 19 -1 True False """
-
isalnum
اگر کاراکتری به غیر از حروف الفبا و اعداد در رشتهای وجود داشته باشد، false و در غیر این صورت true برمیگرداند.
S1 = "year2000" # No space in this string print(S1.isalnum()) S2 = "this is a string with space and . and !" print(S2.isalnum()) """ output: True False """
-
join
عناصر یک دنباله را به وسیله کاراکتری که مشخص میکنیم به هم متصل کرده و بازمیگرداند.
S = "," seq = ("zero" , "to" , "hero") print(S.join(seq)) # output: zero,to,hero
-
(split(sep=None, maxsplit=-1
کلمات یک رشته را از هم جدا کرده و به یک لیست تبدیل میکند. مقدار maxsplit+1، ماکسیمم عناصر لیست را مشخص میکند.
S = "zero \nto \nhero" print(S.split()) print(S.split(" ",1)) """ output: ['zero', 'to', 'hero'] ['zero', '\nto \nhero'] """
-
( replace(old, new, count
این متد رشتهای را با رشتهای دیگر جایگزین میکند.سومین آرگومان ورودی این متد count است که تعداد جایگزین کردن 2 رشته را تعیین میکند. برای مثال:
S = "old- This is old substring to be replaced." print(S.replace("is", "was")) print(S.replace("is", "was", 1)) """ output: old- Thwas was old substring to be replaced. old- Thwas is old substring to be replaced. """
-
(translate(table
کاراکترهای موجود در دو رشتهی یک اندازه را نظیر به نظیر در رشتهی اصلی جایگزین میکند. برای مثال:
print("zero to hero examples".translate(str.maketrans('aeiou', '12345'))) # output: z2r4 t4 h2r4 2xlmpl2s
در مثال بالا str.maketrans جدول ترجمهای را ایجاد میکند که میتوان به عنوان یک دیکشنری به آن نگاه کرد.برای مثال به جای تمام کاراکترهای a که در رشته مورد استفاده قرار گرفته است عدد 1 را جایگزین میکند.
Formatting رشتهها
- روش اول برای قالب بندی رشتهها استفاده از اپراتور % است.
S = "STRING" print("place another string with a mod and s: %s" %(S)) # output: place another string with a mod and s: STRING
برای اعداد اعشاری خواهیم داشت.
print('floating point nmbers use this format: %1.3f' %(145.5656)) print('floating point numbers use this format: %12.0f' %(145.5656)) """ output: floating point nmbers use this format: 145.566 floating point numbers use this format: 146 """
میتوان از tuple برای قالب بندیهای چندگانه (multiple formatting) استفاده کرد.
print('first: %s, second: %r, third: %s ' %('zero', 2, 'hero')) # output: first: zero, second: 2, third: hero
لیستی از نمادهایی که به همراه % استفاده میشوند:
c% کاراکتر s% رشته i% اعداد دهدهی علامتدار d% اعداد دهدهی علامتدار u% اعداد دهدهی بیعلامت o% اعداد در مبنای هشت x% اعداد در مبنای شانزده (حروف کوچک) X% اعداد در مبنای شانزده (حروف بزرگ) e% نماد نمایی (با حرف ‘e’) E% نماد نمایی (با حرف ‘E’) f% اعداد حقیقی و اعشاری
- روش دوم برای قالب بندی رشتهها استفاده از متد format است. این متد در پایتون 3 به بعد پشتیبانی میشود.
name1 = "Ross" name2 = "Rachel" print("hello, {0} and {1}".format(name1, name2)) print("the sum of 1 + 2 is {}".format(1+2)) """ output: hello, Ross and Rachel the sum of 1 + 2 is 3 """
- روش سوم برای قالب بندی رشتهها، f-stringها است که در پایتون 3.6 به بعد پشتیبانی میشود.
name1 = "Ross" name2 = "Rachel" print(f"hello, {name1} and {name2}") print(f"the sum of 1 + 2 is {1+2}") """ output: hello, Ross and Rachel the sum of 1 + 2 is 3 """
جمع بندی
در این مقاله سعی شد در رابطه با رشته ها و قالب بندی آنها توضیح داده شود. البته تمام متدها ذکر نشدهاند. برای مشاهدهی لیست کامل متدها به مستندات مراجعه کنید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.