آموزش پایتون از صفر تا … (قسمت ۳) – String

با سلام، داخل قسمت ۱ از چگونگی تعریف یه متغیر String صحبت کردم. تو این قسمت می خوام به صورت مفصل به String در پایتون بپردازم.

با توجه به اینکه قبول دارید هممون در پایتون تقریبا از Stringها بیشترین استفاده را داریم، به همین جهت سعی می کنم بخش string را به صورت کامل پوشش بدم.

برای مرور و اینکه بحث کامل باشه صرفا با مثال روش تعریف متغیر از نوع String را با مثالی در زیر نشان دادم.

# Python string examples - all assignments are identical.
String_var = 'Python'
String_var = "Python"
String_var = """Python"""

# with Triple quotes Strings can extend to multiple lines
String_var = """ This document will help you to
explore all the concepts
of Python Strings!!! """

# Replace "document" with "tutorial" and store in another variable
substr_var = String_var.replace("document", "tutorial")
print (substr_var)

دسترسی به کاراکترها در Python String :

شما فقط نیاز به شماره index کاراکتر مورد نظر دارید. شبیه اکثر زبان های برنامه نویسی، پایتون نیز از صفر (۰) شروع به ایندکس کردن می کند. اما همچنین ایندکس های منفی را نیز پشتیبانی می کند. که ایندکس (-۱) نشان دهنده آخرین کاراکتر است.

sample_str = 'Python String'

print (sample_str[0])       # return 1st character
# output: P

print (sample_str[-1])      # return last character
# output: g

print (sample_str[-2])      # return last second character
# output: n

برای استخراج کردن بازه ای از کاراکتر های داخل یک String از عملگر Slicingیا همان Colon  (دو نقطه) استفاده می کنیم. بازه را به صورت  [a:b] تعریف می کنیم. که کاراکتر ها را از ایندکس a تا ایندکس b-1 برایمان مشخص می کند.

sample_str = 'Python String'
print (sample_str[3:5])	    #return a range of character
# ho
print (sample_str[7:])      # return all characters from index 7
# String
print (sample_str[:6])      # return all characters before index 6
# Python
print (sample_str[7:-4])
# St

آشنایی با استفاده های نادرست Stringدر پایتون و همچنین ارورکد ها

۱- اگر تلاش به استخراج کاراکتر خارج از محدوده String بکنیم، سپس استثنا ‘IndexError’ بلند خواهد شد. (ترجمه پارسی برای raiseشدن یه exception بهتر از این به ذهنم نرسید 🙂 )

sample_str = "Python Supports Machine Learning."
print (sample_str[1024])      #index must be in range

# IndexError: string index out of range

۲- ایندکس یک Stringباید عدد صحیح باشد. نمیتوان از عدد اعضاری یا هر نوع داده (Datat Type) ی دیگری استفاده کرد. در غیر این صورت یک استثنا TypeError خواهیم داشت

sample_str = "Welcome post"
print (sample_str[1.25])      #index must be an integer

# TypeError: string indices must be integers

اصلاح و حذف String در پایتون

Stringها در پایتون به صورت تغییر ناپذیر (Immutable) طراحی شده اند. به این معنی که وقتی یک Stringبه یک متغیر bind می شود، دیگر نمیتوان تغییرش داد. اگر قصد بروزرسانی Stringرا دارید، به آسانی باید یک Stringجدید را به متغیری با همان نام نسبت دهید.

sample_str = 'Python String'
sample_str[2] = 'a'

# TypeError: 'str' object does not support item assignment

sample_str = 'Programming String'
print (sample_str)

# Output=> Programming String

مشخصه که نمیتوان String را با حذف کردن تعدادی کاراکتر در آن اصلاح کرد. به جای آن می توان کل Strinfرا با دستور ‘del’ حذف کرد.

sample_str = "Python is the best scripting language."
del sample_str[1]
# TypeError: 'str' object doesn't support item deletion

del sample_str
print (sample_str)
# NameError: name 'sample_str' is not defined

عملگرهای Stringدر پایتون :

عملگر (+) (الحاق) : دو Stringرا با هم ترکیب می کند.

var1 = ‘Python’
var2 = ‘String’
print (var1+var2)
# PythonString

عملگر (*) (تکرار) : String جدیدی با تکرار تعداد عددی که گرفته، از Stringداده شده می سازد.

var1 = ‘Python’
print (var1*3)
# PythonPythonPython

عملگر ( [ ] ) (Slicing) : کاراکتر با ایندکس داده شده را بر می گرداند.

var1 = ‘Python’
print (var1[2])
# t

عملگر ( [ : ] ) (Range Slicing) : کاراکترهای اراپه شده در بازه داده شده را بر می گرداند.

var1 = ‘Python’
print (var1[2:5])
# tho

عملگر (in) (عضویت): اگر کاراکتر در Stringباشد، Trueبر می گرداند.

var1 = ‘Python’
print (‘n’ in var1)
# True

عملگر (not in) (عضویت): اگر کاراکتر در String نباشد، Trueبر می گرداند.

var1 = ‘Python’
print (‘N’ not in var1)
# True

عملگر for برای String در پایتون : به مثال ذیل توجه کنید

var1 = 'Python'
for var in var1:
    print (var)
# P
# y
# t
# h
# o
# n

عملگر (r/R) : برای اینکه معنی حقیقی کاراکتر های Escape درون یک Stringنادیده گرفته شود.

print (r’\n’)
# \n
print (R’\n’)
# \n

عملگرهای فرمت String در پایتون:

کاراکتر های Escape:

دنباله های Escape با Backslash (\) شروع می شوند که به کامپایلر میگه که با این متفاوت رفتار کن. زیرسیستم پایتون به صورت خودکار یه دنباله Escape را داخل یک String (با double quoted یا single quoted ) تفسیر می کند.

یکی از مهمترین Escape ها، زمانی است که بخوایم single-quote  یا double-quote را Escape کنیم. برای مثال String داریم به فرمت زیر:

“Python is “widely” used language”.

ما به روشی نیاز داریم که به پایتون حالی کنیم double-quote های دور Widely به معنای اتمام Stringنیست، بلکه جزوی از String هستند.

به دستورات زیر توجه کنید:

print ("Python is "widely" used language")

# SyntaxError: invalid syntax

# After escaping with double-quotes

print ("Python is \"widely\" used language")

# Output: Python is “widely” used language

خب در ادامه یه لیست کامل از Escapeها در پایتون‌آورده شده است:

کاراکتر فرمت در پایتون (٪) :

عملگر (٪) برای فرمت String استفاده می شود. این عملگر با تابع print() کار می کند.

به مثال زیر توجه کنید:

print ("Employee Name: %s,\nEmployee Age:%d" % ('Ashish',25))

# Employee Name: Ashish, 
# Employee Age: 25

در ادامه لیستی کامل از سیمبول هایی که میتوان با (٪) استفاده شود آورده شده است:

پشتیبانی از Unicode String در پایتون :

String رایج مقادیر ASCI به صورت ۸بیتی ذخیره می کند درحالی که Unicode به صورت ۱۶ بیتی استاندارد. این پسوند اجازه می دهد که Stringها شامل کاراکتر هایی از دیگر زبان های چهان از جمله پارسی نیز شوند. در پایتون حرف (u) به عنوان پیشوند جهت تمییز دادن بین String  معمولی و Unicode  می باشد.

print (u' Hello Python!!')

#Hello Python

توابع تبدیل String در پایتون :

تابع caoitalize() : این تابع String را به صورتی که حرف اولش بزرگ باشد و باقی حروف کوچک باز می گرداند.

var = ‘PYTHON’
print (var.capitalize())
# Python

تابع lower(): تمام کاراکتر ها را به حروف کوچک تبیدل می کند.

var = ‘TechBeamers’
print (var.lower())
# techbeamers

تابع upper() : تمام کاراکتر ها را به حروف بزرگ تبدیل می کند.

var = ‘TechBeamers’
print (var.upper())
# TECHBEAMERS

تابع swapcase() در پایتون : حرو ف کوچک را بزرگ و برعکس حروف بزرگ را کوچک می کند.

var = ‘TechBeamers’
print (var.swapcase())
# tECHbEAMERS

تابع title() در پایتون : ورژن عنوانی String را بر می گرداند، یعنی حروف اول کلمات بزرگ و باقی حروف تمامی کلمات کوچک.

var = ‘welcome to Python programming’
print (var.title())
# Welcome To Python Programming

 count( str[,beg [,end]])

تعداد دفعاتی که زیر متن ‘str’ در بازه [beg, end] رخ داده است را بر می گرداند. اگر این مقادیر beg و end داده نشده باشد، داخل کل متن جستجو انجام می دهد.

var=’TechBeamers’
str=’e’
print (var.count(str))
# 3
var1=’Eagle Eyes’
print (var1.count(‘e’))
# 2
var2=’Eagle Eyes’
print (var2.count(‘E’,0,5))
# 1

توابع مقایسه ای String در پایتون : 

تابع islower() : اگر تمام کاراکتر های String با حروف کوچک باشند مقدار True را بر می گرداند. اگر هر کدام از حروف بزرگ بود مقدار False بر می گرداند.

var=’Python’
print (var.islower())
# False
var=’python’
print (var.islower())
# True

تابع isupper() در پایتون : مانند تابع بالایی منتهی برعکس ، یعنی اگر تمام حروف بزرگ بودند مقدار True را بر می گرداند.

var=’Python’
print (var.isupper())
# False
var=’PYTHON’
print (var.isupper())
# True

تابع isdecimal() : اگر تمام کاراکتر ها درون String دسیمال بودند True را بر می گرداند. اگر هر کدام از کاراکتر های نوع داده ای بجز دسیمال داشت مقدار False را بر می گرداند.

num=u’2016′
print (num.isdecimal())
# True

 

آموزش ها از قرار زیر هستند (در حال تکمیل) :