آشنایی با رشته در پایتون
![](https://zerotohero.ir/wp-content/uploads/2018/07/string-python-1.png)
رشته (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 """
جمع بندی
در این مقاله سعی شد در رابطه با رشته ها و قالب بندی آنها توضیح داده شود. البته تمام متدها ذکر نشدهاند. برای مشاهدهی لیست کامل متدها به مستندات مراجعه کنید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.