رشته ها در برنامه نویسی پایتون

4 سال پیش

رشته ها در برنامه نویسی پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، در این آموزش می آموزید که رشته ها در برنامه نویسی پایتون ایجاد، قالب بندی، اصلاح و حذف کنید. همچنین  با عملگرها و توابع مختلف رشته ای آشنا خواهید شد.

پیشنهاد ویژه : آموزش طراحی وب سایت با پایتون

رشته در پایتون چیست؟

رشته دنباله ای از کاراکترها است. یک کاراکتر به سادگی یک نماد است. به عنوان مثال، زبان انگلیسی ۲۶ حرف یا کاراکتر دارد.

رایانه ها با کاراکترها سر و کار ندارند، آنها با اعداد (باینری) سر و کار دارند. حتی اگر ممکن است کاراکتر هایی را بر روی صفحه نمایش خود مشاهده کنید، در داخل آنها به عنوان ترکیبی از ۰ و ۱ ذخیره و ذخیره می شوند.

به این تبدیل کاراکتر به  عدد کدگذاری (encoding) گفته می شود و روند معکوس آن رمزگشایی است. ASCII و Unicode برخی از رمزگذاری های محبوب مورد استفاده هستند.

در پایتون، رشته دنباله ای از کاراکترهای یونیکد (Unicode)  است. یونیکد شامل هر کاراکتری در همه زبانها میباشد و یکنواختی در رمزگذاری ایجاد می کند.

چگونه یک رشته در پایتون ایجاد کنیم؟

رشته ها را می توان با محصور کردن کاراکترها در داخل یک نقل قول یا نقل قول های دوتایی ایجاد کرد. حتی می توان از نقل قول های سه گانه در پایتون استفاده کرد اما به طور کلی برای نشان دادن رشته های چند خطی و دوره های اولیه استفاده می شود.

# defining strings in Python
# all of the following are equivalent
my_string = 'Hello'
print(my_string)

my_string = "Hello"
print(my_string)

my_string = '''Hello'''
print(my_string)

# triple quotes string can extend multiple lines
my_string = """Hello, welcome to
           the world of Python"""
print(my_string)

 

خروجی

Hello
Hello
Hello
Hello, welcome to
           the world of Python

 

 

چگونه می توان به کاراکترهای یک رشته دسترسی داشت؟

با استفاده از اندیس گذاری و استفاده از برش زدن طیف وسیعی از کاراکترها می توانیم به کاراکترهاای منفرد دسترسی پیدا کنیم. فهرست از ۰ شروع می شود. تلاش برای دستیابی به کاراکتری خارج از محدوده اندیس باعث ایجاد یک IndexError می شود. اندیس باید یک عدد صحیح باشد. ما نمی توانیم از ممیزشناور یا انواع دیگر استفاده کنیم ، این امر منجر به TypeError می شود.

پایتون برای دنباله های خود اندیس منفی را امکان پذیر می کند.

اندیس ۱- به آخرین مورد، و اندیس ۲- به یکی به آخری اشاره دارد. با استفاده از عملگر برش می توانیم به طیف وسیعی از موارد در یک رشته دسترسی پیدا کنیم:

#Accessing string characters in Python
str = 'programiz'
print('str = ', str)

#first character
print('str[0] = ', str[0])

#last character
print('str[-1] = ', str[-1])

#slicing 2nd to 5th character
print('str[1:5] = ', str[1:5])

#slicing 6th to 2nd last character
print('str[5:-2] = ', str[5:-2])

 

خروجی

str =  programiz
str[0] =  p
str[-1] =  z
str[1:5] =  rogr
str[5:-2] =  am

 

اگر بخواهیم به یک فهرست خارج از محدوده دسترسی پیدا کنیم یا از اعدادی غیر از یک عدد صحیح استفاده کنیم با خطا مواجه خواهیم شد.

# index must be in range
>>> my_string[15]  
...
IndexError: string index out of range

# index must be an integer
>>> my_string[1.5] 
...
TypeError: string indices must be integers

 

برش زدن را می توان با در نظر گرفتن اندیس در بین عناصر به شکل زیر نشان داد.

اگر می خواهیم به محدوده ای دسترسی پیدا کنیم، به اندیسی نیاز داریم که بخشی را از رشته برش دهد.

چگونه یک رشته را تغییر دهیم یا حذف کنیم؟

رشته ها تغییرناپذیر هستند. این بدان معناست که عناصر یک رشته پس از اختصاص دادن قابل تغییر نیستند. ما می توانیم به سادگی رشته های مختلف را به یک نام اختصاص دهیم.

>>> my_string = 'programiz'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'

 

ما نمی توانیم کاراکتر ها را از یک رشته حذف کنیم. اما حذف کامل رشته با استفاده از کلیدواژه del امکان پذیر است.

>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined

 

 

عملیات های رشته پایتون

عملیات بسیاری وجود دارد که می تواند با رشته ها انجام شود که آن را به یکی از پرکاربردترین انواع داده در پایتون تبدیل می کند.

اتصال دو یا چند رشته در پایتون

به هم پیوستن دو یا چند رشته در یک رشته مجزا گفته می شود. عملگر + این کار را در پایتون انجام می دهد.

از عملگر * می توان برای تکرار رشته برای تعداد دفعه مشخص استفاده کرد.

# Python String Operations
str1 = 'Hello'
str2 ='World!'

# using +
print('str1 + str2 = ', str1 + str2)

# using *
print('str1 * 3 =', str1 * 3)

 

خروجی

str1 + str2 =  HelloWorld!
str1 * 3 = HelloHelloHello

 

نوشتن دو رشته لیترال با هم، آنها را مانند عملگر +  به هم متصل می کند.

اگر می خواهیم رشته ها را در خطوط مختلف به هم متصل کنیم، می توانیم از پرانتز استفاده کنیم.

>>> # two string literals together
>>> 'Hello ''World!'
'Hello World!'

>>> # using parentheses
>>> s = ('Hello '
...      'World')
>>> s
'Hello World'

تکرار از طریق یک رشته در پایتون

با استفاده از حلقه for می توانیم از طریق رشته تکرار کنیم. در اینجا مثالی برای شمارش تعداد’l’های یک رشته آورده شده است.

# Iterating through a string
count = 0
for letter in 'Hello World':
    if(letter == 'l'):
        count += 1
print(count,'letters found')

 

خروجی

۳ letters found

 

تست عضویت رشته  در پایتون

ما می توانیم با استفاده از کلیدواژه in، بررسی کنیم که آیا یک زیر رشته در یک رشته وجود دارد یا خیر.

>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False

 

 

توابع توکار برای کار با پایتون

توابع مختلف توکار که با توالی نیز با رشته به خوبی کار می کنند.

برخی از مواردی که معمولاً مورد استفاده قرار می گیرند  ()enumerate  و ()len هستند. تابع enumerate یک شی enumerate را برمی گرداند. این شامل اندیس و مقدار تمام موارد موجود در رشته به صورت جفت است.

به همین ترتیب، ()len  طول (تعداد کاراکترهای) رشته را برمی گرداند.

str = 'cold'

# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str) = ', list_enumerate)

#character count
print('len(str) = ', len(str))

 

خروجی

list(enumerate(str) =  [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')]
len(str) =  4

 

 

قالب بندی رشته پایتون

توالی گریز (Escape)

اگر بخواهیم متنی را چاپ کنیم مانند “?He said, “What’s there ، نه می توانیم از نقل قول های تکی استفاده کنیم و نه از نقل قول های دوتایی. این امر منجر به یک SyntaxError خواهد شد زیرا متن خود شامل هر دو نقل قول تکی و دوتایی است.

>>> print("He said, "What's there?"")
...
SyntaxError: invalid syntax
>>> print('He said, "What's there?"')
...
SyntaxError: invalid syntax

 

یکی از راه های حل این مشکل استفاده از نقل قول های سه گانه است. یا ایتکه می توانیم از توالی های escape استفاده کنیم.

توالی های escape با یک بک اسلش شروع می شود و به گونه دیگری تفسیر می شود. اگر از یک نقل قول تکی برای نشان دادن یک رشته استفاده کنیم، باید از تمام نقل قول های تکی رشته درون مجموعه خودداری کرد. مورد مشابه در نقل قول های دوتایی است. در اینجا نحوه انجام متناسب با متن فوق آورده شده است.

# using triple quotes
print('''He said, "What's there?"''')

# escaping single quotes
print('He said, "What\'s there?"')

# escaping double quotes
print("He said, \"What's there?\"")

 

خروجی

He said, "What's there?"
He said, "What's there?"
He said, "What's there?"

 

در اینجا لیستی از تمام توالی های escape پشتیبانی شده توسط پایتون وجود دارد.

توالی های escape توضیحات
\newline بک اسلش و خط جدید نادیده گرفته شود
\\ بک اسلش
\’ نقل قول تکی
\”  نقل قول دوتایی
\a زنگ ASCII
\b بک اسپیس ASCII
\f قطع صفحه ASCII
\n نو خط ASCII
\r سرخط ASCII
\t تب افقی ASCII
\v تب عمودی ASCII
\ooo  اعداد در مبنای هشت
\xHH اعداد در مبنای شانزده

مثال

>>> print("C:\\Python32\\Lib")
C:\Python32\Lib

>>> print("This is printed\nin two lines")
This is printed
in two lines

>>> print("This is \x48\x45\x58 representation")
This is HEX representation

 

 

رشته خام برای نادیده گرفتن توالی گریز

بعضی اوقات ممکن است بخواهیم توالی های گریز درون یک رشته را نادیده بگیریم. برای این کار می توانیم حرف r یا R را جلوی رشته قرار دهیم. این بدان معناست که این یک رشته خام است و هر دنباله گریز در داخل آن نادیده گرفته خواهد شد.

>>> print("This is \x61 \ngood example")
This is a
good example
>>> print(r"This is \x61 \ngood example")
This is \x61 \ngood example

 

متد ()format برای قالب بندی رشته ها

متد ()format که با شی  رشته در دسترس می باشد در قالب بندی رشته ها بسیار متنوع و قدرتمند است. قالب بندی رشته ها شامل آکولاد {} به عنوان placeholders یا فیلدهای جایگزین هستند که جایگزین می شوند.

برای تعیین ترتیب می توانیم از آرگومان های موقعیتی یا آرگومان های کلیدواژه استفاده کنیم.

# Python string format() method

# default(implicit) order
default_order = "{}, {} and {}".format('John','Bill','Sean')
print('\n--- Default Order ---')
print(default_order)

# order using positional argument
positional_order = "{1}, {0} and {2}".format('John','Bill','Sean')
print('\n--- Positional Order ---')
print(positional_order)

# order using keyword argument
keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean')
print('\n--- Keyword Order ---')
print(keyword_order)

 

خروجی

--- Default Order ---
John, Bill and Sean

--- Positional Order ---
Bill, John and Sean

--- Keyword Order ---
Sean, Bill and John

 

متد ()format می تواند مشخصات قالب اختیاری داشته باشد. آنها با استفاده از نشان دونقطه: از نام فیلد جدا می شوند.

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

>>> # formatting integers
>>> "Binary representation of {0} is {0:b}".format(12)
'Binary representation of 12 is 1100'

>>> # formatting floats
>>> "Exponent representation: {0:e}".format(1566.345)
'Exponent representation: 1.566345e+03'

>>> # round off
>>> "One third is: {0:.3f}".format(1/3)
'One third is: 0.333'

>>> # string alignment
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
'|butter    |  bread   |       ham|'

 

 

قالب بندی به سبک قدیمی

حتی می توانیم رشته هایی مانند سبک ()sprintf  قدیمی را که در زبان برنامه نویسی C استفاده می شود، قالب بندی کنیم. ما برای رسیدن به این هدف از عملگر٪ استفاده می کنیم.

>>> x = 12.3456789
>>> print('The value of x is %3.2f' %x)
The value of x is 12.35
>>> print('The value of x is %3.4f' %x)
The value of x is 12.3457

 

متدهای متداول رشته ها در برنامه نویسی پایتون

روشهای متعددی با رشته شی در دسترس است. متد ()format که در بالا ذکر کردیم یکی از آنهاست. برخی از روشهای معمول مورد استفاده عبارتند از:  lower()upper()join()split()find()replace و غیره وجود دارد.

>>> "PrOgRaMiZ".lower()
'programiz'
>>> "PrOgRaMiZ".upper()
'PROGRAMIZ'
>>> "This will split all words into a list".split()
['This', 'will', 'split', 'all', 'words', 'into', 'a', 'list']
>>> ' '.join(['This', 'will', 'join', 'all', 'words', 'into', 'a', 'string'])
'This will join all words into a string'
>>> 'Happy New Year'.find('ew')
۷
>>> 'Happy New Year'.replace('Happy','Brilliant')
'Brilliant New Year'

 

منبع.

لیست جلسات قبل آموزش برنامه نویسی پایتون

  1. آموزش نصب و اجرای برنامه نویسی پایتون
  2. کلیدواژه ها و شناسه های برنامه نویسی پایتون
  3. دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
  4. متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون 
  5. انواع داده ها در برنامه نویسی پایتون
  6. تبدیل نوع در برنامه نویسی پایتون
  7. ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
  8. عملگرها در برنامه نویسی پایتون
  9. نام و دامنه در برنامه نویسی پایتون
  10. دستور شرطی if…else در برنامه نویسی پایتون
  11. حلقه for در برنامه نویسی پایتون
  12. حلقه while در برنامه نویسی پایتون
  13. دستورات break و continue در برنامه نویسی پایتون
  14. دستور pass در برنامه نویسی پایتون
  15. توابع در برنامه نویسی پایتون
  16. آرگومان تابع در برنامه نویسی پایتون
  17. تابع بازگشتی در برنامه نویسی پایتون
  18. تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
  19. متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
  20. کلیدواژه global در برنامه نویسی پایتون
  21. ماژول های برنامه نویسی پایتون
  22. پکیج ها در برنامه نویسی پایتون
  23. اعداد و تبدیل نوع داده در برنامه نویسی پایتون 
  24. لیست در برنامه نویسی پایتون
  25. تاپل در برنامه نویسی پایتون 
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه