آموزش رشته ها در پایتون

October 2021


نوع داده رشته(string) پایتون توالی متشکل از یک یا چند کاراکتر منفرد است که می تواند از حروف ، اعداد ، نویسه های فضای خالی یا نمادها تشکیل شود. از آنجا که رشته یک دنباله است ، از طریق نمایه سازی و برش به همان روش هایی که انواع داده های مبتنی بر توالی وجود دارد ، می توان به آن دسترسی داشت.

 

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

 

 


 

رشته(string) در پایتون چطور شمارش میشود؟

 

مانند نوع داده لیست که دارای مواردی است که با یک شماره شاخص یا index مطابقت دارند ، هر یک از نویسه های یک رشته نیز با یک شماره شاخص مطابقت دارند که با شماره 0 شروع می شود.

 

برای رشته Sammy Shark! تجزیه و تحلیل شاخص به این شکل است:

 
S
a
m
m
y
 
S
h
a
r
k
!
0
1
2
3
4
5
6
7
8
9
10
11

 

همانطور که مشاهده می کنید ، اولین S از شاخص 0 شروع می شود و رشته با شاخص 11 برای نماد ! به پایان می رسد.

 

ما همچنین متوجه شدیم که کاراکتر فضای سفید بین sammy و shark نیز با شماره شاخص خود مطابقت دارد. در این حالت ، شماره شاخص مرتبط با فضای سفید 5 است.

 

علامت تعجب (!) همچنین دارای یک شماره شاخص مرتبط با آن است. هر علامت یا علائم نگارشی دیگری ، مانند * # $ & .؛ نیز یک کاراکتر است و با شماره نمایه خود همراه است.

 

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

 


 

دسترسی به کاراکترها با شماره شاخص(index) مثبت

 

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

 

ss = "Sammy Shark!"
print(ss[4])


# OUTPUT
y

 

وقتی به یک شماره شاخص خاص از یک رشته مراجعه می کنیم ، پایتون نویسه ای را که در آن موقعیت قرار دارد برمی گرداند. از آنجا که حرف y در شاخص شماره 4 رشته ss = Sammy Shark است ، هنگام چاپ ss [4] کاراکتر y را به عنوان خروجی دریافت می کنیم.

 

اعداد شاخص به ما امکان می دهد تا به نویسه های خاص درون یک رشته دسترسی پیدا کنیم.

 


 

دسترسی به کاراکترها با شماره شاخص(index) منفی

 

اگر یک رشته طولانی داشته باشیم و بخواهیم یک مورد را به سمت انتهای آن مشخص کنیم ، می توانیم از انتهای رشته به عقب بشماریم ، از شاخص شماره -1 شروع کنیم.

 

برای همان رشته Sammy Shark! تجزیه و تحلیل شاخص منفی به این شکل است:

 

S a m m y   S h a r k !
-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

 

با استفاده از شماره های شاخص منفی ، می توانیم کاراکتر r را با مراجعه به موقعیت آن در شاخص -3 چاپ کنیم ، مانند زیر: 

 

print(ss[-3])


# OUTPUT
r

 

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

 


 

تکه کردن رشته‌ها(slicing strings)

 

همچنین می توان طیف وسیعی از نویسه ها را از این رشته صدا زد. مثلا ما می خواهیم فقط کلمه shark را چاپ کنیم. ما می توانیم این کار را با ایجاد یک برش ، دنباله ای از کاراکترها در یک رشته اصلی انجام دهیم. با برش ها ، می توانیم مقادیر چند کاراکتر را با ایجاد محدوده ای از اعداد شاخص با دو نقطه [x: y] فراخوانی کنیم

 

print(ss[6:11])


# OUTPUT
Shark

 

هنگام ساخت یک برش ، مانند [6:11] ، اولین شماره شاخص جایی است که برش شروع می شود (شامل) ، و شماره دوم شاخص جایی است که قطعه قطع می شود (غیر شامل) ، به همین دلیل در مثال ما در این دامنه ، به عنوان شاخصی باشد که درست پس از پایان رشته رخ می دهد.

 

هنگام برش رشته ها ، ما در حال ایجاد یک substring هستیم که اساساً رشته ای است که در یک رشته دیگر وجود دارد. هنگامی که ما ss [6:11] را صدا می کنیم ، ما در حال فراخوانی shark یک substring هستیم که در رشته Sammy Shark وجود دارد!

 

اگر بخواهیم یکی از انتهای یک رشته را وارد کنیم ، می توانیم یکی از اعداد را در string[n: n] حذف کنیم. به عنوان مثال ، اگر می خواهیم اولین کلمه رشته ss را چاپ کنیم  می توانیم با تایپ کردن این کار را انجام دهیم:

 

print(ss[:5])


# OUTPUT
Sammy

 

ما این کار را با حذف شماره شاخص قبل از دونقطه در برش انجام دادیم و فقط شامل شماره شاخص بعد از دونقطه شدیم که به انتهای زیر رشته اشاره دارد.

 

برای چاپ substring که از وسط رشته شروع می شود و تا انتها چاپ می شود ، می توانیم این کار را با اضافه کردن فقط شماره شاخص قبل از دونقطه انجام دهیم ، مانند زیر:

 

print(ss[7:])


# OUTPUT
hark

 

با وارد کردن فقط شماره شاخص قبل از دونقطه و حذف کردن شماره شاخص دوم، رشته فرعی از کاراکتر شماره شاخص به انتهای رشته می رود.

 

برای برش دادن یک رشته می توانید از شماره های شاخص منفی نیز استفاده کنید. همانطور که قبلاً دیدیم، شماره های شاخص منفی یک رشته از -1 شروع می شود و از آنجا شمارش معکوس می شود تا به ابتدای رشته برسیم. هنگام استفاده از شماره های شاخص منفی ، ابتدا همانطور که در رشته رخ می دهد ابتدا با عدد پایین شروع خواهیم کرد.

 

بیایید از دو عدد شاخص منفی برای برش رشته ss استفاده کنیم:

print(ss[-4:-1])


# OUTPUT
ark

 

زیر رشته "ark" از رشته "sammy shark" چاپ شده است زیرا کاراکتر "a" در موقعیت عدد شاخص -4 رخ می دهد و شخصیت "k" درست قبل از موقعیت شماره -1 شاخص رخ می دهد.

 


 

مشخص کردن قدم step هنگام برش رشته ها

 

برش رشته می تواند علاوه بر دو عدد شاخص ، پارامتر سوم را نیز بپذیرد. پارامتر سوم ، step را مشخص می کند ، که به تعداد کاراکترهای پس از بازیابی اولین کاراکتر از رشته اشاره دارد. تا کنون ، ما پارامتر step را حذف کرده ایم ، و پایتون به صورت پیش فرض گام 1 را انتخاب می کند ، بنابراین هر کاراکتر بین دو عدد شاخص بازیابی می شود.

 

بیایید دوباره به مثال بالا نگاه کنیم که زیرشاخه "shark" را چاپ می کند:

 

print(ss[6:11])


# OUTPUT
shark

 

با گنجاندن پارامتر سوم با گام 1 می توانیم همان نتایج را بدست آوریم:

 

print(ss[6:11:1])


# OUTPUT
shark

 

بنابراین، گام 1 در هر کاراکتر بین دو عدد شاخص یک برش قرار می گیرد. اگر پارامتر stride را حذف کنیم ، پایتون با 1 پیش فرض می کند.

 

اگر در عوض ، step را افزایش دهیم ، خواهیم دید که از کاراکترها صرف نظر می شود:

print(ss[0:12:2])


# OUTPUT
SmySak

 

تعیین گام 2 به عنوان آخرین پارامتر در   ss [0: 12: 2] از سایر کاراکترها می گذرد. بیایید به کاراکترهایی که با رنگ زرد برجسته شده اند نگاهی بیندازیم:

S a m m y    S h a r k !

 

توجه داشته باشید که کاراکتر فضای سفید در شاخص شماره 5 نیز با یک قدم 2 مشخص شده پرش می شود.

 

اگر از عدد بزرگتر برای پارامتر گام خود استفاده کنیم ، یک زیر رشته به طور قابل توجهی کوچکتر خواهیم داشت:

 

print(ss[0:12:4])


# OUTPUT
Sya

 

تعیین گام 4 به عنوان آخرین پارامتر در   ss [0: 12: 4] فقط هر چهارمین کاراکتر را چاپ می کند. باز هم ، بیایید کاراکترهایی را که با رنگ زرد برجسته شده اند ، بررسی کنیم:

S a m m y    S h a r k !

در این مثال از کاراکتر فضای سفید نیز رد می شود.

 

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

 

print(ss[::4])


# OUTPUT
Sya

 

حذف دو عدد شاخص و نگه داشتن دونقطه ها، کل رشته را در محدوده قرار می دهد، در حالی که با اضافه کردن یک پارامتر نهایی برای step ، تعداد کاراکترهایی که باید رد شوند مشخص می شود.

 

علاوه بر این ، می توانید یک مقدار عددی منفی برای step مشخص کنید ، که اگر رشته را روی -1 تنظیم کنیم می توانیم رشته اصلی را به ترتیب معکوس چاپ کنیم:

print(ss[::-1])


# OUTPUT
!krahS ymmaS

 

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

 

print(ss[::-2])


# OUTPUT
!rh ma

 

در این مثال ، ss [:: - 2] ، ما با کل رشته اصلی سروکار داریم زیرا هیچ عددی از شاخص ها در پارامترها وجود ندارد ، و رشته را از طریق گام منفی معکوس می کنیم. علاوه بر این ، با داشتن یک گام از -2 ، ما از هر حرف دیگر رشته معکوس صرف نظر می کنیم:

! k r a h S [whitespace] y m m a S

 

نویسه فضای سفید در این مثال چاپ شده است.

 

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

 


 

متدهای شمارشی در رشته‌های پایتون

 

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

 

ما ابتدا به متد len() نگاه خواهیم کرد که می تواند طول هر نوع داده را که دنباله ای است ، چه مرتب شده و چه غیر مرتب ، از جمله رشته ها ، لیست ها ، تاپل ها و دیکشنری ها بدست آورد.

 

بیایید طول رشته ss را چاپ کنیم:

 

print(len(ss))


# OUTPUT
12

 

طول رشته 12 کاراکتر است، از جمله کاراکتر فضای سفید و علامت تعجب.

 

به جای استفاده از یک متغیر ، می توانیم یک رشته را به متد len () منتقل کنیم:

 

print(len("Let's print the length of this string."))


# OUTPUT
38

 

متد len () تعداد کل کاراکترهای یک رشته را محاسبه می کند.

 

اگر بخواهیم تعداد دفعاتی که یک کاراکتر خاص یا دنباله ای از کاراکترها در یک رشته نشان داده می شوند را بشماریم ، می توانیم این کار را با استفاده از روش str.count () انجام دهیم. بیایید با رشته ss = Sammy Shark کار کنیم. و تعداد دفعات ظاهر شدن شخصیت "a" را بشمارید:

 

ss = "Sammy shark!"

print(ss.count("a"))


# OUTPUT
2

 

می توانیم کاراکتر دیگری را جستجو کنیم:

print(ss.count("s"))


# OUTPUT
0

 

اگرچه حرف "S" در رشته است ، اما باید به خاطر داشت که هر یک از کاراکترها به حروف کوچک و بزرگ حساس هستند. اگر بخواهیم همه حروف را در یک رشته بدون توجه به حروف بزرگ و کوچک جستجو کنیم ، می توانیم از روش () str.lower برای تبدیل رشته به همه کوچک استفاده کنیم.

 

likes = "Sammy likes to swim in the ocean, likes to spin up servers, and likes to smile."

print(likes.count("likes"))


# OUTPUT
3

 

در رشته های likes ، توالی کاراکتری که معادل "likes" است ، 3 بار در رشته اصلی رخ می دهد.

 

همچنین می توانیم دریابیم که یک کاراکتر یا دنباله کاراکتر در یک موقعیت از یک رشته اتفاق می افتد. ما می توانیم این کار را با استفاده از متد () str.find انجام دهیم ، و این موقعیت کاراکتر را بر اساس شماره شاخص برمی گرداند.

 

می توانیم بررسی کنیم که "m" اول در رشته ss کجا رخ می دهد:

print(ss.find("m"))


# OUTPUT
2

 

اولین کاراکتر "m" در موقعیت شاخص 2 در رشته "Sammy Shark!" رخ می دهد. می توانیم موقعیت شماره های شاخص رشته ss را در بالا بررسی کنیم.

 

بیایید بررسی کنیم که اولین توالی کاراکتر "likes" در رشته likes کجا رخ می دهد:

print(likes.find("likes"))



# OUTPUT
6

 

اولین نمونه توالی کاراکتر "likes" از موقعیت شماره 6 شاخص شروع می شود ، جایی که شخصیت l دنباله likes شده قرار می گیرد.

 

اگر بخواهیم ببینیم سکانس دوم "likes" از کجا شروع می شود ، چه می شود؟ ما می توانیم این کار را با عبور دادن یک پارامتر دوم به روش str.find () که با یک شماره شاخص خاص شروع می شود ، انجام دهیم. بنابراین ، به جای شروع در ابتدای رشته ، بیایید پس از شاخص شماره 9 شروع کنیم:

 

print(likes.find("likes", 9))


# OUTPUT
34

 

در این مثال دوم که از شاخص شماره 9 آغاز می شود ، اولین رخداد دنباله کاراکتر "likes" با نمایه شماره 34 آغاز می شود.

 

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

 

print(likes.find("likes", 40, -6))


# OUTPUT
64

 

این آخرین مثال موقعیت دنباله ای "likes" را بین شماره های شاخص 40 و -6 جستجو می کند. از آنجا که پارامتر نهایی وارد شده یک عدد منفی است ، از انتهای رشته اصلی در حال شمارش است.

 

نتیجه گیری

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


5:49:03


0

intro

10:38

رایگان

1

variable

13:57

رایگان

2

string

19:22

رایگان

3

list

8:46

رایگان

4

while

9:6

رایگان

5

if

8:37

رایگان

6

for

6:12

رایگان

7

range

4:17

رایگان

8

break, continue, pass

9:15

رایگان

9

functions

12:32

رایگان

10

list methods

12:11

رایگان

11

tuple

8:29

رایگان

12

set

7:47

رایگان

13

dictionary

9:19

رایگان

14

module

10:40

رایگان

15

fstring

5:35

رایگان

16

format

7:34

رایگان

17

working with file

17:14

رایگان

18

scope

6:25

رایگان

19

class

12:15

رایگان

20

methods

20:19

رایگان

21

class variable

14:7

رایگان

22

class/static method

13:25

رایگان

23

inheritance

17:6

رایگان

24

special methods

9:50

رایگان

25

access points

11:12

رایگان

26

property

6:54

رایگان

27

exception

21:17

رایگان

28

standard library

12:51

رایگان

29

docString

10:49

رایگان

30

virtualenv

11:2

رایگان


دوره‌های پیشنهادی

دوره اول آموزش جنگو(django)

دوره اول آموزش جنگو(django)

دوره اول آموزش پروژه محور پایتون

دوره اول آموزش پروژه محور پایتون

دوره آموزش DRF

دوره آموزش DRF

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم

وحید

September 2021

سلام
اگر تو پایتون بخوایم چک که یک رشته داخل یک رشته دیگه هست باید چیکار کنیم؟ مثلا
آیا how داخل جمله how are you هست یا نه؟

ارسال نظر


امیرحسین بیگدلو

September 2021

سلام
باید از کلمه کلید in استفاده کنید. مثلا:
how in how are you
این دستور به شما true یا false برمیگردونه که میتونید داخل یک شرط if بکار ببرید.