مجله خبری برنامه‌نویسی پایتون

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

مجله خبری برنامه‌نویسی پایتون

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

مجله خبری برنامه‌نویسی پایتون

زبان پایتون (Python) در سال ۱۹۹۱ توسط یک برنامه‌نویس هلندی به نام گیدو ون روسوم (Guido van Rossum) ابداع شد و از آن زمان تا کنون رشد قابل ملاحظه‌ای را شاهد بوده است.

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

در یک سال گذشته، «Python» یکی از کلماتی بود که شهروندان آمریکایی بسیار زیاد در گوگل جستجو کرده‌اند، حتی بیشتر از نام ستاره‌های تلویزیونی.

۳ مطلب با کلمه‌ی کلیدی «replace» ثبت شده است

در مثال بعدی میخواهیم از دستوری برای جایگزینی استفاده کنیم بعنوان مثال هر جا روزی در هفته وجود داشت بجای آن روز، سه تا علامت سوال قرار بدهیم.
نکته ای که اینجا وجود داره اینه که تمام روزهای هفته ما به کلمه day ختم خواهد شد. در درس قبل گفتیم w  برای تمام کارکتر ها استفاده میشه و b هم برای مشخص کردن مرز کلمه یا بعبارت بهتر پیدا کردن یک تطابق در ابتدا یا انتهای کلمه استفاده خواهد شد. 
پس میتوانیم از عبارت نامنظم زیر و متد str.replace برای هدفمون استفاده کنیم:

 

df['text'].str.replace(r'\w+day\b', '???')

0          ???: The doctor's appointment is at 2:45pm.
1       ???: The dentist's appointment is at 11:30 am.
2          ???: At 7:00pm, there is a basketball game!
3         ???: Be back home by 11:15 pm at the latest.
4    ???: Take the train at 08:10 am, arrive at 09:..

 

حالا اگر فرض بر این باشه بخواهیم تغییر در رشته ایجاد کنیم که بر مبنای کلمه مورد نظر باشه از متدهای replace  و lambda  استفاده خواهیم کرد. دقت کنید ما متد لامبدا رو در دوره مقدماتی توضیح داده بودیم.

حالا در این مثال میخواهیم بجای روزهای هفته، فقط سه حرف ابتداییش در خروجی قرار بگیره. مثلا بجای Monday عبارت Mon چاپ گردد.

df['text'].str.replace(r'(\w+day\b)', lambda x: x.groups()[0][:3])

0          Mon: The doctor's appointment is at 2:45pm.
1       Tue: The dentist's appointment is at 11:30 am.
2          Wed: At 7:00pm, there is a basketball game!
3         Thu: Be back home by 11:15 pm at the latest.
4    Fri: Take the train at 08:10 am, arrive at 09:..

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

✅ مثالهای گوناگون


🔹 تابع split بصورت پیش فرض رشته ها رو از طریق space یا همون فاصله جدا میکنه و کلمات رو استخراج میکنه، اما ما میتونیم داخل پرانتز کارکتر دلخواه خودمون رو بعنوان میعار جدا کردن در نظر بگیریم. مثال زیر رو ببنید:


>>> text4 = "ouagadougou"

>>> text5 = text4.split('ou')

>>> text5

['', 'agad', 'g', '']


▪️خوب در مثال بالا رشته رو بر اساس کارکتر ou جدا کرد.دقت کنید که ما text4 رو نمیتونیم بر اساس میعار فاصله جدا کنیم چون هیچ فاصله ای در این رشته وجود نداره و اگر داخل پرانتر دستور split خالی باشه به ارور خواهیم خورد.


🔹 در دوره مقدماتی در مورد لیست صحبت کردیم و اگر بخواهیم text4 رو تبدیل به لیست کنیم کارکتر به کارکتر داخل یک لیست برامون قرار میده.


>>> list(text4)

['o', 'u', 'a', 'g', 'a', 'd', 'o', 'u', 'g', 'o', 'u']


🔹با استفاده از حلقه for هم امکان ایجاد لیست فوق وجود داره، مثال رو ببنید.


>>> [c for c in text4]

['o', 'u', 'a', 'g', 'a', 'd', 'o', 'u', 'g', 'o', 'u']


🔹 حالا اگر بخواهیم دوباره ou رو به text5 متصل کنیم از دستور join برای اینکار استفاده میکنیم.و نحوه استفاده بصورت زیر خواهد بود


>>> 'ou'.join(text5)

'ouagadougou'



🔹یک رشته جدید تو این مثال خواهیم زد که ابتدای رشته دوتا فاصله وجود داره؛ ما اول میاییم با دستور split کلمات رو جدا میکنیم و اتفاقی که میفته فاصله های ابتدایی رو بعنوان یک کلمه مجزا درنظر میگیره


>>> text6 = '  a quick brown fox jumped over the lazy dog'

>>> text6.split(' ')

['', '', 'a', 'quick', 'brown', 'fox', 'jumped', 'over', 'the', 'lazy', 'dog']



🔹حالا اگر بخواهیم این فاصله های اضافی رو برداریم و با توجه به اینکه این موضوع برای مباحث متن کاوی مهم هست که موارد اضافه رو حذف کنیم از دستور strip برای اینکار استفاده خواهیم کرد.


>>> text7 = text6.strip()

>>> text7.split(' ')

['a', 'quick', 'brown', 'fox', 'jumped', 'over', 'the', 'lazy', 'dog']



▪️همانطور که در بالا مشاهده میکنیم دیگر فاصله ها در لیست ما قرار ندارند.



مثال دستور find و replace


🔹 در متن جدید میخواهیم کارکتر o رو پیدا کنیم اگر از دستور find استفاده کنیم اولین کارکتر o در متن رو پیدا میکنه و اندیسش رو بعنوان خروجی برمیگردونه. (اندیس در پایتون از صفر شروع میشه)


>>> text8 = "a quick brown fox jumped over the lazy dog"

>>> text8.find('o')

10


🔹 اگر دستور rfind برای اینکار استفاده کنید آخرین کارکتر o در رشته رو پیدا میکنه، بعبارتی از آخر رشته جستجو رو انجام میده.


>>> text8.rfind('o')

40


🔹 و برای جایگزینی کارکتر o با مقدار صفر (0) میتونیم از دستور replace بصورت زیر استفاده کنیم


>>> text8.replace('o','0')

'a quick br0wn f0x jumped 0ver the lazy d0g'

✅ معرفی توابع پایتون برای رشته ها


🔹 تو تایپیک قبل در مورد اینکه چه توابعی برای کلمات در پایتون وجود داره رو گفتیم، الان میخواهیم توابع رو برای رشته ها بگیم. باز یک تعریف کلی داریم و مثال ها رو تو بخش های بعدی خواهیم زد.


1️⃣ تبدیل کردن به حروف کوچک و بزرگ رشته ها و همچنین تبدیل یک رشته به حالت titlecase


s.upper()  ;  s.lower()  ;  s.title()


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


2️⃣ جدا کردن کلمات که بارها تو اسلایدهای قبل ازش استفاده کردیم و در بخش های بعدی هم استفاده خواهیم کرد.


s.split()


3️⃣حالا اگر بخواهیم یک سند رو یا یک پارگراف رو بر اساس خطوط جدا کنیم میتونیم از تایع زیر استفاده کنیم.


s.splitlines()


🔹نکته ای که اینجا هست و شاید براتون سوال باشه اینه چطور میتونیم در IDLE پایتون، یک رشته رو در چند خط بنویسیم.برای اینکار کافیه کوتیشن که برای رشته در ابتدا و انتهاش بکار برده میشه بجای یکی از سه تا استفاده کنیم.


>>> s="""how are

you today"""

>>> s

'how are\nyou today'


4️⃣ تابع join برای اتصال رشته ها به هم هست که ما تو بخش های بعدی مثال های خواهیم زد.


s.join()


5️⃣ تابع بعدی برای حذف می باشد وقتی از strip استفاده میکنیم و داخل پرانتر کارکتری رو وارد میکنیم سبب میشه که اون کارکتر از کل رشته حذف بشه و اگر از rsrtip استفاده کنیم از انتهای رشته فقط یک موردش حذف خواهد شد . حالا مثالهای رو در بخش های بعدی خواهید دید.


s.strip()  ;  s.rstrip()


6️⃣ دستور بعدی برای یافتن یک رشته یا کارکتر داخل رشته دیگه استفاده میشه.اگر عبارت داخل پرانتر در رشته بود اندیس شروع اون عبارت رو بعنوان خروجی برمیگردونه. اما یک تفاوت اساسی در rfind وجود داره اینه که در این تابع حتما باید کلمه مورد نظر بصورت جدا باشه.ما برای این مورد خاص همینجا یک مثال میزنیم


s.find()  ;  s.rfind()


مثال 


>>> s1 = "this is really a string example....wow!!!";

>>> s2 = "is";

>>> s1.find(s2)

2

>>> s1.rfind(s2)

5


🔸 خوب تو مثال بالا کاملا تفاوت این دو تابع مشخصه که ما در rfind کلماتی رو پیدا میکنیم که مجزا باشند و ترکیب شده با حروف دیگری نباشند.


7️⃣ آخرین دستور این بخش دستور جایگزینی یا همون replace هست که میاد تو رشته میگرده و اگر عبارت u  وجود داشت با v جایگزین خواهد کرد.


s.replace(u,v)


🔘 در آخر باید بگم حتما مثالهای گوناگونی برای این بخش خواهیم زد. تا تمام این توابع، کامل توضیح داده باشیم