متد Replace در پایتون به عنوان ابزاری برای حذف یا جایگزینی قسمتی از رشته یا متن طراحی شده است. String یا رشته در پایتون به عنوان یکی از مهمترین نوعهای داده در برنامهنویسی شناخته میشود. پایتون هم به عنوان یکی از قدرتمندترین زبانهای سطح بالای برنامهنویسی در بسیار از پروژههای تخصصی خود با رشتهها کار میکند. بنابراین باید به ابزارهای مختلف مورد نیاز در هنگام کار با رشته مجهز باشد. در این زبان برنامهنویسی اغلب از متد .replace()
برای تمیز کردن متنهای بزرگ و کوچک استفاده میکنند. این کار با حذف یا جابهجا کردن قسمتهای خاصی از رشته انجام میشود.
در این مطلب از مجله فرادرس روش کار متد .replace()
را برای انجام عملیات جایگزینی رشته در پایتون بررسی کردهایم. همچنین سناریوهای مختلفی که در آنها به جابهجایی در رشتهها نیاز میشود را به صورت کدنویسی نمایش دادهایم. در نهایت هم یکی از حالتهای استثنای این عملیات را پیادهسازی کردیم. مثال استثنا نمایش داده شده درباره حساسیت به بزرگی و کوچکی حروف الفبا است. برای پیادهسازی حالت استثنا نیاز به استفاده از تکنیکهای دیگری به غیر از بهکاربردن متد Replace داریم.
متد Replace در پایتون چه کاری انجام می دهد؟
متد .replace()
نسخه کپی از رشته اصلی را برمیگرداند. به این معنا که زیر رشته قبلی به صورت سابق برجای خود باقی مانده، اما کپی جدید از روی رشته اصلی با تغییرات مورد نظر برنامه نویس ایجاد میشود. در کپی جدید هر بخشی از متن که مشخص شده با دادههای جدید جایگزین شدهاند.
در زمان استفاده از متد Replace در پایتون، میتوانیم هر تعداد نمونه از کاراکتر مشخص شده را با کاراکتر جدید جابهجا کنیم. حتی میتوانیم کل رشتهای در متن را با خط جدیدی از متنی که تعیین شده جایگزین کنیم.
متد Replace در پایتون چگونه کار میکند؟
برای آشنا شدن با روش کار متد .replace()
لازم است که در ابتدا با سینتکس پایه این متد آشنا شویم. در کادر زیر سینتکس متد .replace()
را نمایش دادهایم.
1string.replace(old_text, new_text, count)
برای درک بهتر سینتکس بالا اجزای آن را به صورت جزءبهجزء بررسی میکنیم.
- پارامتر old_text
اولین پارامتر الزامی است که متد .replace()
میپذیرد. این پارامتر متد نشاندهنده کاراکتر قدیمی یا بخشی از متن است که میخواهیم جایگزین کنیم. مقداری را که در جایگاه این پارامتر قرار میگیرد باید با علامتهای کوتیشن محصور کرد.
- پارامتر new_text
دومین پارامتر الزامی است که متد .replace()
میپذیرد. این پارامتر نمایانگر کاراکتر یا بخش جدیدی از متن است که باید جایگزین کاراکتر یا بخش قدیمی متن شود. مقداری را که در جایگاه این پارامتر قرار میگیرد هم نیاز است که با علامتهای کوتیشن محصور شود.
- پارامتر سوم یا آخری که متد .replace()
میپذیرد، پارامتر count
است. وجود این پارامتر در متد، اختیاری است. به صورت پیشفرض، متد .replace()
همه نمونههای پارامتر اول خود را با پارامتر دوم در متن پیدا کرده و جایگزین میکند. اما با استفاده از پارامتر count
میتوانیم تعداد دفعههایی که میخواهیم پارامتر old_text
با پارامتر جدید جایگزین شود را مشخص کنیم.
بهترین آموزش های مقدماتی زبان برنامه نویسی پایتون در فرادرس
زبان برنامه نویسی پایتون، در حال حاضر به یکی از محبوبترین زبانهای برنامهنویسی بین دانشجویان و فعالان حوزه فناوری تبدیل شده است. از طرفی به دلیل سادگی در یادگیری و استفاده، مورد علاقه افراد تازه وارد به حوزه برنامه نویسی قرار گرفته است. از طرف دیگر هم به دلایلی مثل قدرت بالا، کتابخانهها و ابزارهای بسیار متنوع، انعطافپذیری و غیره یکی از گزینههای مورد علاقه حرفهایها در زمینههای تجاری و تکنولوژیکی شده است. برای همین، دوره آموزش صحیح این زبان برنامهنویسی یکی از مهمترین دورههای موجود است.
فرادرس به عنوان بزرگترین تولید کننده محتوای آموزشی فارسی تقریبا در همه حوزهها به تولید فیلمهای آموزشی پرداخته است. فیلمهای آموزشی فرادرس با دقت و حساسیت بالا بر روی کیفیت فیلم و محتوی تولید میشوند. زبان پایتون هم یکی از گزینههای مورد نظر فرادرس است. این دوره آموزشی به دلیل حساسیت بالا با تمرکز و کیفیت بیشتری تولید شده است.
در ادامه چند مورد از فیلمهای آموزشی فرادرس را درباره دورههای مقدماتی پایتون معرفی کردهایم. در صورت تمایل با کلیک بر روی تصویر بالا میتوانید وارد صفحه اصلی این مجموعه آموزشی شده و از فیلمهای بیشتر دیدن کنید.
مثال های کدنویسی شده ای از متد Replace در پایتون
برای آموزش پایتون در سطح ابتدایی به منظور درک کدهای نوشته شده روشهای مختلفی موجود هستند. اما یکی از بهترین گزینهها تماشای فیلم رایگان آموزش پایتون، برنامه نویسی سریع و آسان در ۱۴۰ دقیقه فرادرس است. برای راحتی کار مخاطبان عزیز لینک این آموزش را در پایین قرار دادهایم.
مثالهای این بخش، شرایط مختلفی را که ممکن است از متد Replace در پایتون استفاده کنیم، به چهار حالت مختلف در زیر تقسیم کردهاند. در نهایت هم تکنیک دیگری را درباره جایگزینی رشته بدون استفاده از متد Replace نمایش دادهایم.
- چگونه همه مظاهر کاراکتر مشخص شده را جایگزین کنیم؟
- چگونه فقط تعداد مشخصی از مظاهر کاراکتر مشخص شده را جایگزین کنیم؟
- چگونه همه نمونههای رشته مشخص شده را جایگزین کنیم؟
- چگونه فقط تعداد مشخصی از نمونههای رشته مشخص شده را جایگزین کنیم؟
- گزینه آخر: جایگزینی رشته با استفاده از تکنیک List Comprehension و متد join()
در ادامه این بخش، همه سوالات بالا را با ذکر مثال، به ترتیب از اولین مورد پاسخ دادهایم.
چگونه همه مظاهر کاراکتر مشخص شده را جایگزین کنیم؟
برای اینکه همه نمونههای موجود از کاراکتر خاصی را تغییر دهیم، برنامه خود را باید مطابق مثال کدنویسی شده در پایین، پیادهسازی کنیم.
1phrase = "I like to learn coding on the go"
2
3# replace all instances of 'o' with 'a'
4substituted_phrase = phrase.replace("o", "a" )
5
6print(phrase)
7print(substituted_phrase)
8
9#output
10
11#I like to learn coding on the go
12#I like ta learn cading an the ga
در مثال بالا، کاراکتر o
در همه کلمات موجود در متن با کاراکتر a
جایگزین شده است.
در این مثال، چهار نمونه از کاراکتر o
وجود دارد. به طور خاص، این کاراکتر در کلمات to
و coding
و on
و go
از رشته فرضی داده شده در مثال بهکار برده شده. اما چه میشد اگر میخواستیم فقط کاراکتر موجود در دو کلمه را تغییر دهیم؟ مثلا در کلمات to
و coding
فقط o
را به a
تبدیل کنیم.
چگونه تعداد معینی از کاراکتر مشخص شده را جایگزین کنیم؟
برای کار کردن روی رشتهها در پایتون با تسلط بیشتر لازم است که در کار با بعضی از تکنیکها و متدها تسلط یا حداقل آشنایی را داشته باشیم. به همین منظور، پیشنهاد میکنیم که برای افزایش تجربه خود درباره ترفندهای کار با این نوع داده کاربردی، مطلب ۲۲ ترفند پایتون برای کار با رشته ها از مجله فرادرس را مطالعه کنید.
در این بخش میخواهیم فقط تعداد دو عدد از مظاهر کاراکتر مشخص شده را جایگزین کنیم، به همین دلیل، از پارامتر count
استفاده میکنیم. توجه کنید که در مثال پایین، مقدار پارامتر count
را برابر با عدد 2
گذاشتهایم.
1phrase = "I like to learn coding on the go"
2
3# replace only the first two instances of 'o' with 'a'
4substituted_phrase = phrase.replace("o", "a", 2 )
5
6print(phrase)
7print(substituted_phrase)
8
9#output
10
11#I like to learn coding on the go
12#I like ta learn cading on the go
اما اگر برای تغییر دادن تنها اولین رخداد از کاراکتر مورد نظر، مقدار پارامتر count
را باید برابر با عدد 1
قرار دهیم.
1phrase = "I like to learn coding on the go"
2
3# replace only the first instance of 'o' with 'a'
4substituted_phrase = phrase.replace("o", "a", 1 )
5
6print(phrase)
7print(substituted_phrase)
8
9#output
10
11#I like to learn coding on the go
12#I like ta learn coding on the go
چگونه همه نمونه های رشته مشخص شده را جایگزین کنیم؟
برای تغییر دادن تعداد بیش از یک عبارت یا کلمه در متن اصلی، باید شبیه به کد زیر عمل کنیم.
1phrase = "The sun is strong today. I don't really like sun."
2
3#replace all instances of the word 'sun' with 'wind'
4substituted_phrase = phrase.replace("sun", "wind")
5
6print(phrase)
7print(substituted_phrase)
8
9#output
10
11#The sun is strong today. I don't really like sun.
12#The wind is strong today. I don't really like wind.
در مثال پیادهسازی شده بالا کلمه sun
در طول رشته با کلمه wind
جابهجا شده است.
چگونه فقط تعداد خاصی از نمونه های رشته مشخص شده را جایگزین کنیم؟
در متن فرضی مثال قبل، اگر بخواهیم که فقط اولین نمونه از کلمه sun
را با کلمه wind
جایگزین کنیم، باید از پارامتر count
استفاده کرده و مقدار آن را برابر با عدد 1
قرار دهیم.
1phrase = "The sun is strong today. I don't really like sun."
2
3#replace only the first instance of the word 'sun' with 'wind'
4substituted_phrase = phrase.replace("sun", "wind", 1)
5
6print(phrase)
7print(substituted_phrase)
8
9#output
10
11#The sun is strong today. I don't really like sun.
12#The wind is strong today. I don't really like sun.
جایگزینی رشته با تکنیک List Comprehension و متد join
در این بخش میخواهیم عملیات جایگزینی رشته را بدون استفاده از متد .replace()
انجام دهیم.
- در ابتدا باید با استفاده از متد split رشته اصلی را به لیستی از زیر رشتههای تشکیل دهنده آن تقسیم کنیم.
- با استفاده از تکنیک List Comprehension تمام رخدادهای زیر رشته مورد نظر را با زیر رشته جدید جابهجا کرده و لیست جدیدی ایجاد میکنیم.
- در نهایت هم با استفاده از متد join()
زیر رشتههای موجود در لیست جدید را دوباره به یکدیگر میچسبانیم و رشته اصلی را با صورت جدید، بازسازی میکنیم.
1my_string = "Faradars Blog Team "
2old_substring = "a"
3new_substring = "A"
4
5split_list = my_string.split(old_substring)
6new_list = [new_substring if i < len(split_list)-1 else '' for i in range(len(split_list)-1)]
7new_string = ''.join([split_list[i] + new_list[i] for i in range(len(split_list)-1)] + [split_list[-1]])
8
9print(new_string)
خروجی حاصل از اجرای کد بالا به صورت عبارت FArAdArs Blog TeAm
در کنسول پایتون نمایش داده میشود.
چگونه از متد Replace در پایتون به صورت حساس به حروف بزرگ و کوچک استفاده کنیم؟
قبل از شرح فرایند اجرای این عملیات، بهتر است به مثال پایین توجه کنید.
1phrase = "I am learning Ruby. I really enjoy the ruby programming language!"
2
3#replace the text "Ruby" with "Python"
4substituted_text = phrase.replace("Ruby", "Python")
5
6print(substituted_text)
7
8#output
9
10#I am learning Python. I really enjoy the ruby programming language!
در مورد مثال بالا، کاری که واقعا میخواهیم انجام دهیم، جابهجایی همه نمونههای کلمه Ruby
با کلمه Python
در متن است. اما در متن کلمه ruby
هم وجود دارد که از حرف «r» کوچک استفاده میکند. البته میخواهیم این کلمه را نیز تغییر دهیم.
بخاطر اینکه حرف اول این کلمه کوچک است، پس با کلمه Ruby
که در کد مشخص شده و از حرف بزرگ «R» استفاده میکند، همخوانی ندارد. در نتیجه کلمه ruby
به همان شکل اولیه خود باقی مانده و به کلمه Python
تبدیل نخواهد شد.
متد .replace()
به صورت حساس به حروف بزرگ و کوچک انگلیسی طراحی شده است. بنابراین، این متد عملیات جایگزینی رشتهها را نیز با حساسیت به حروف بزرگ و کوچک اجرا میکند.
برای انجام دادن عملیات جایگزینی رشتهها به صورت غیر حساس به حروف بزرگ و کوچک، لازم است که به روش متفاوتی اقدام کنیم. به منظور انجام اینکار باید از تابع re.sub()
و پرچم re.IGNORECASE
استفاده کنیم.
مراحل استفاده از تابع re.sub
برای استفاده از تابع re.sub()
، باید طبق مراحل زیر اقدام کنیم.
- در ابتدا باید با کمک کد import re
، از ماژول re
، استفاده کنیم.
- سپس باید الگوی خاصی را – در جایگاه پارامتر pattern
- برای عبارت منظم مشخص کنیم.
- بعد باید چیزی را که میخواهیم با الگوی مشخص شده pattern
جایگزین شود را – در جایگاه پارامتر replace
- مشخص کنیم.
- سپس به تابع رشتهای را معرفی میکنیم. این رشته همان رشتهای است که عملیات مورد نظر باید بر روی آن اجرا شود.
- بعد به صورت اختیاری با تنظیم کردن پارامتر count
میتوانیم فرایند اجرای عملیات جایگزینی را دقیقتر انجام دهیم. با کمک این پارامتر مقدار بیشینهای را که میخواهیم عملیات جایگزینی انجام شود تعیین میکنیم.
- در نهایت هم با قرار دادن پرچم re.IGNORECASE
به عبارتهای باقاعده میگوییم که اجرای عملیات جایگزینی را بدون توجه به بزرگی و کوچکی حروف انجام دهد.
با رعایت همه نکات بالا، سینتکس پایه برای استفاده از تابع re.sub()
به شکل زیر میشود.
1import re
2
3re.sub(pattern, replace, string, count, flags)
برای پیادهسازی آزمایش خود متن فرضی که در مثال قبل استفاده شده بود را بهکار بردهایم.
1phrase = "I am learning Ruby. I really enjoy the ruby programming language!"
با این روش الان میتوانیم کلمات Ruby
و ruby
را با کلمه Python
جایگزین کنیم.
1import re
2
3phrase = "I am learning Ruby. I really enjoy the ruby programming language!"
4
5phrase = re.sub("Ruby","Python", phrase, flags=re.IGNORECASE)
6
7print(phrase)
8
9#output
10
11#I am learning Python. I really enjoy the Python programming language!
یادگیری پایتون با فیلم های آموزشی پروژه محور
در این قسمت از مطلب، به عنوان آموزشهای تکمیلی پایتون چند مورد از فیلمهای آموزشی پروژه محور فرادرس را معرفی کردهایم. این فیلمهای آموزشی از ابتدا تا انتهای مراحل کدنویسی پروژه را نمایش میدهند. همچنین از سادهترین تکنیکهای برنامهنویسی مانند تعریف متغیر تا تکنیکهای پیچیده در این پروژهها پیادهسازی شده است. به همین دلیل، گزینه بسیار مناسبی برای تمرین همه آموختههای دانشجویان زبان برنامهنویسی پایتون هستند.
جمع بندی
زبان برنامهنویسی پایتون، زبانی همه کاره و انعظافپذیر است. نوع داده رشته هم یکی از نوع دادههای بسیار پرکاربرد در پایتون است. از همین رو جایگزینی رشتهها در پایتون، از مسائلی است که در پروژههای مختلف، حتی پروژههای سطح بالایی مانند هوش مصنوعی یا داده کاوی برای برنامهنویسان پیش میآید. اکنون، با مطالعه این مطلب، با اصول اصلی و پایه عملیات مربوط به جایگزینی در رشتهها آشنا شدیم و میتوانیم تمام مسائل مربوط به این سوال را حل کنیم.
توانایی کار بر روی متدهای بهظاهر ساده و کوچک با توجه به گستره پایتون، در مسائل مربوط به پروژههای بزرگ نیز میتواند بسیار راهگشا باشد. در این مطلب از مجله فرادرس، با متد Replace در پایتون آشنا شده و انواع مسائل قابل حل توسط این متد را به کمک مثالهای کدنویسی شده بررسی کردیم. در نهایت هم دیدیم که چگونه با کمک متد جایگزین re.sub()
میتوانیم از پس مسائلی بر بیاییم که متد Replace در پایتون قادر به حل آنها نیست.
source