متد Split در پایتون – توضیح به زبان ساده با مثال و کد


متد Split در پایتون برای تجزیه نوع داده رشته پایتون به واحدهای تشکیل دهنده آن بهکار میرود. این متد میتواند رشتهها را با توجه به کاراکتر یا حائلی که تعیین میکنیم به زیر رشتههای متفاوتی تقسیم کند. در پایتون از تابع .split() برای تجزیه رشتهها به زیر رشتههای تشکیل دهنده آنها استفاده میشود. در این مطلب از مجله فرادرس با تابع .split()در پایتون آشنا میشویم و درباره سینتکس این تابع و روش استفاده از آن بحث میکنیم. از این متد با آرگومان یا بدون آرگومانهای اختیاری متد میتوان استفاده کرد. در مطلب، هر کدام از این حالتها را با مثالهای کدنویسی شده نشان دادهایم. کل مباحثی که در این مطلب پوشش دادهایم شامل سینتکس تابع .split() همراه با روش استفاده از این تابع، با استفاده از آرگومانهای حائل و بدون استفاده از این آرگومانها میشود.
متد split در پایتون چیست؟
متد Split یکی دیگر از متدهای رشته در پایتون است. از متد .split() برای تجزیه رشتهها به صورت واحدهای تشکیل دهنده آنها در لیست، استفاده میشود. این متد با توجه به جداکنندهای که تعیین میکنیم رشتهها را تجزیه میکند. این جدا کننده خود میتواند تشکیل شده از چندین کاراکتر باشد.
سینتکس متد split در پایتون
شکل عمومی سینتکس متد .split() چیزی شبیه به کد نوشته شده در پایین است.
1string.split(separator, maxsplit)
در فهرست پایین تمام اجزای سینتکس نمایش داده شده بالا را تجزیه کرده و هر کدام را بهطور کامل توضیح دادهایم.
- string رشتهای است که باید به واحدهای تشکیل دهنده آن تجزیه کنیم. این همان رشتهای است که با متد .split() فراخوانی میکنیم.
- متد .split() دو آرگومان میپذیرد.
- اولین آرگومان اختیاری این متد separator یا جداکننده است. این آرگومان، نوع حائلی که برای تجزیه واحدهای رشته استفاده میشود را تعیین میکند. اگر این آرگومان در متد تعریف نشده باشد، به صورت پیشفرض، متد تمام فضاهای خالی «Whitespace» موجود در رشته را به عنوان جدا کننده در نظر میگیرد. به این معنا که متد .split()بر روی رشته دریافت شده پیمایش میکند و هرجا که با کاراکتر فضای خالی روبرو شد رشته را به زیر رشتههای مختلف تجزیه میکند.
- دومین آرگومان اختیاری این متد maxsplit است. این آرگومان بیشترین تعداد قطعاتی را تعریف میکند که متد .split() میتواند رشته اصلی را به آنها تجزیه کند. اگر این آرگومان تعیین نشده باشد، مقدار پیش فرض برابر با -1 خواهد بود. این عدد به نبود هیچ محدودیتی در تعداد قطعات تشکیل شده توسط متد .split()اشاره میکند. بنابراین تابع .split() رشته دریافت شده را با توجه به کاراکتر حائلی که با آن برخورد میکند به هر تعداد ممکن تبدیل میکند.
متد .split() لیست جدیدی را برمیگرداند که شامل همه زیر رشتههای تشکیل دهنده رشته اصلی است. در نتیجه رشته اصلی دست نخورده و بدون تغییر باقی میماند.
چگونه با کمک فرادرس کار با پایتون را شروع کنیم؟
زبان برنامه نویسی پایتون یکی از زبانهای بسیار پرطرفدار در دنیا است. این زبان به دلیل همهکاره بودن، انعطافپذیری و فرایند آموزشی سادهای که دارد گزینه بسیار خوبی برای شروع یادگیری برنامه نویسی است. از طرفی، توانایی این زبان در حل پروژههای بزرگ و پیچیده از طراحی بک اند سایت گرفته تا مدلسازی هوش مصنوعی و غیره باعث شده که بازار کار خوبی نیز در میان سایر زبانهای برنامهنویسی داشته باشد. به همین دلیل، فرادرس فیلمهای آموزشی بسیار مناسبی را با کیفیت عالی و هزینههای بسیار مقرون بهصرفه برای آموزش این زبان برنامهنویسی تهیه کرده است.

این فیلمها مقدمه بسیار خوبی برای کار با پایتون و حتی دورههای پیشرفته آن هستند. حتی فرادرس هزینه بعضی از این دورهها را رایگان کرده است. با این کار، تمام افرادی که به دنبال کسب دانش برنامهنویسی هستند را برای شروع آموزش، تشویق میکند. در صورت تمایل به دیدن فیلمهای بیشتر میتوانید بر روی تصویر بالا کلیک کنید و به صفحه اصلی این مجموعه آموزش مراجعه کنید.
- فیلم آموزش رایگان پایتون، برنامه نویسی سریع و آسان در ۱۴۰ دقیقه با فرادرس
- فیلم آموزش برنامه نویسی پایتون دوره مقدماتی فرادرس
- فیلم آموزش رایگان نصب پایتون در ویندوز با فرادرس
- فیلم آموزش ویژوال پایتون، برنامه نویسی پایتون بدون کدنویسی با Visual Python در فرادرس
استفاده از متد split در پایتون بدون استفاده از آرگومان های اختیاری
در این بخش روش استفاده از متد .split() بدون آرگومانهایش را خواهیم دید. در کد پایین مثالی را برای این حالت پیادهسازی کردهایم.
1coding_journey = "I am learning to code for free with faradars!"
2
3# split string into a list and save result into a new variable
4coding_journey_split = coding_journey.split()
5
6print(coding_journey)
7print(coding_journey_split)
8
9# check the data type of coding_journey_split by using the type() function
10print(type(coding_journey_split))
خروجی حاصل از اجرای کد بالا به صورت زیر است.
I am learning to code for free with faradars! ['I', 'am', 'learning', 'to', 'code', 'for', 'free', 'with', 'faradars!'] <class 'list'>
خروجی كد بالا نشان میدهد که هر کلمهای در رشته داده شده، الان عنصری از لیست را تشکیل میدهد. به همچنین لیست اصلی نیز حفظ شده است.
اگر هیچکدام از آرگومانهای قابل قبول متد .split() را به این متد ارسال نکنیم، هر وقت که متد .split() با کاراکتر فضای خالی روبرو شود، قطعهای از رشته اصلی را جدا میکند. این عملیات تا به انتهای رشته بدون محدودیت انجام خواهد شد.
اما باید ببینیم، چه اتفاقی میافتد اگر هیچ آرگومانی به متد .split() ارسال نکنیم و این متد در طول پیمایش خود با کاراکتر فضای خالی به صورت متوالی در کنارهم در رشته اصلی روبهرو شود.
1coding_journey = "I love coding"
2
3coding_journey_split = coding_journey.split()
4
5print(coding_journey_split)
خروجی کد بالا به صورت زیر نمایش داده میشود.
['I', 'love', 'coding']
در مثال بالا، چند کاراکتر فضای خالی را بین کلمات love و coding به صورت متوالی در کنارهم اضافه کردهایم. در چنین مواردی، متد .split() با کاراکترهای فضای خالی چسبیده بهم مانند یک کاراکتر فضای خالی رفتار میکند.

روش کار متد split با آرگومان جداکننده
همینطور که قبلا دیدیم وقتی که آرگومان جدا کننده separator را به متد .split() ارسال نکنیم بهطور پیشفرض کاراکتر فضای خالی را به عنوان آرگومان جدا کننده separator در نظر میگیرد. به هر حال باید آرگومانی به عنوان جداکننده separator وجود داشته باشد. اما میتوانیم آرگومان جداکننده separator دیگری را نیز بنابر انتخاب خود تعیین کنیم.
separator برای تجزیه و جدا کردن قطعاتی از رشته دریافت شده در زمان روبهرو شدن با کاراکتر تعیین شده، بهکار برده میشود. در نهایت هم این متد، لیستی از همه زیر رشتههایی برمیگرداند که بر اساس کاراکتر تعیین شده در separator جدا شدهاند.
برای مثال میتوانیم با استفاده از متد .split() با هر بار روبهرو شدن با کاراکتر نقطه . قطعهای از رشته دریافت شده را جدا کنیم.
1fave_website = "www.faradars.org"
2
3fave_website_split = fave_website.split(".")
4
5print(fave_website_split)
خروجی کد بالا به صورت زیر نمایش داده میشود.
['www', 'faradars', 'org']
در مثال کدنویسی شده بالا، متد .split() هر بار که با کاراکتر نقطه روبهرو میشود تکهای از رشته دریافت شده را به عنوان زیر رشته جدا میکند.
توجه کنید که در این مثال نقطهای را با کاراکتر فضای خالی بعد از آن تعریف نکردیم. در صورت اجرای چنین کدی، متد .split() کلا کار نمیکرد. زیرا اصلا چنین توالی از کاراکترها در این رشته وجود نداشت.
قبل از بررسی کد زیر، توجه کنید که بیشترین کاربرد متد split در پایتون مربوط به تجزیه و پردازش متنها و نوع داده رشتهای میشود. در صورتی که نسبت به این مبحث علاقهمند هستید، پیشنهاد میکنیم بعد از خواندن این مطلب، مطلب راهنمای جامع پیش پردازش متن در پایتون را نیز از مجله فرادرس مطالعه کنید. این مطلب اطلاعات کاملی درباره کار با دادههای متنی ارائه میدهد.
1fave_website = "www.faradars.org"
2
3fave_website_split = fave_website.split(". ")
4
5print(fave_website_split)
خروجی حاصل از اجرای کد بالا به صورت زیر است.
['www.faradars.org']
الان مثال آخر از بخش قبلی را دوباره مشاهده میکنیم.
وقتی که هیچ آرگومان separator در متد .split() تعریف نشده بود، حتی کاراکترهای فضای خالی متوالی نیز مانند کاراکتر یکتایی در نظر گرفته میشدند و در واقع از کاراکتر فضای خالی به عنوان جدا کننده استفاده میشد.

اما اگر در متد .split() به وضوح یک کاراکتر فضای خالی را به صورت مجزا به عنوان جداکننده تعیین کنیم، هربار که در طول پیمایش رشته به کاراکتر فضای خالی به صورت مجزا بر بخوریم تکهای از آن را باید به عنوان زیر رشته جدا کرده و در لیست جواب قرار دهیم.
1coding_journey = "I love coding"
2
3coding_journey_split = coding_journey.split(" ")
4
5print(coding_journey_split)
نتیجه اجرای کد بالا به صورت زیر در خروجی نمایش داده میشود.
['I', 'love', '', '', 'coding']
در مثال بالا، هر وقتی که متد .split() با کاراکتر فضای خالی مواجه شده، تکهای از زیر رشته را جدا کرده و به لیست اجزای تشکیل دهنده رشته اصلی اضافه کرده است.
نکته آموزشی
برای استفاده از آرگومان جداکننده separatorمیتوانیم این آرگومان را به وضوح در ورودی متد با استفاده از کلمه کلیدی sep نام ببریم. در کد پایین مثالی از تعریف کاراکتر با استفاده از این کلمه را در تابع میبینید.
1s = 'Python is Nice'
2
3# simple string split example
4str_list = s.split(sep=' ')
5print(str_list)
خروجی کد بالا به صورت زیر در خروجی نمایش داده میشود.
['Python', 'is', 'Nice']
روش کار متد split با آرگومان maxsplit
تا وقتی که چیزی به عنوان آرگومان maxsplit تعیین نشده، محدودیتی نیز برای تعداد زیر رشتههای جدا شده از رشته دریافتی وجود ندارد.
در اولین مثال از بخش قبل، متد .split() رشته دریافت شده را با هربار مواجه با separator به زیر رشتههای تشکیلدهنده آن تجزیه میکرد. این عمیات تا زمان رسیدن به انتهای رشته اصلی بدون محدودیتی انجام میپذیرفت.
اما با استفاده از آرگومان maxsplit میتوانیم بر روی تعداد دفعات اجرای این عملیات نیز محدودیت بگذاریم یا به عبارتی تعیین کنیم که چند زیر رشته از رشته اصلی جدا شوند.

برای مثال، در کد پایین تعیین کردهایم که عملیات جداسازی زیر رشتهها با بر خورد متد .split() با اولین نقطه به پایان برسد.
1fave_website = "www.faradars.org"
2
3fave_website_split = fave_website.split(".", 1)
4
5print(fave_website_split)
خروجی ناشی از اجرای کد بالا در کنسول پایتون به شکل زیر نمایش داده میشود.
['www', 'faradars.org']
در مثال بالا، مقدار maxsplit را بر روی 1 تنظیم کردهایم. بنابراین لیستی که تولید شده فقط حاوی دو آیتم است.
در این مثال تعیین کردهایم که رشته در زمان روبهرو شدن با اولین نقطه، فقط باید به دو زیررشته تقسیم شود. بنابراین به محض اینکه متد .split() با اولین نقطه مواجه شد، زیررشتههای مورد نظر را شناسایی کرده و در لیست جواب جایگذاری میکند. به همین راحتی، عملیات به پایان میرسد. در این صورت بعد از نقطه اول هر چه که در رشته آمده باشد حتی اگر حاوی کاراکتر نقطه باشد به عنوان یک عنصر از لیست جواب در نظر گرفته میشود.
نکته آموزشی
درباره آرگومان maxsplit نیز میتوان این آرگومان را با استفاده از کلمه کلیدی maxsplit مقداردهی کرد. استفاده از این کلمات کلیدی مزایای فهرست شده در پایین را دارند.
- دیگر نیازی به رعایت ترتیب در بین maxsplit و separatorدر زمان تعریف متد Split در پایتون وجود ندارد.
- میتوانیم بدون تعریف مقداری برای separator، مقداری را برای maxsplit تعریف کنیم.
در پایین مثالی از بهکار بردن این کلمات کلیدی را کدنویسی کردهایم.
1s = 'Python is Nice'
2
3str_list = s.split(sep=' ', maxsplit=1)
4print(str_list)
خروجی حاصل از اجرای کد بالا به صورت ['Python', 'is Nice'] است.
آموزش سطوح حرفه ای تر کدنویسی با پایتون
زبان برنامهنویسی پایتون دارای سطوح پیشرفتهای است که میتواند برای پیشرفتهترین کاربردهای تکنولوژیکی حال حاضر دنیا مورد استفاده قرار بگیرد. از تکنیکهای حرفهای و فریمورکهای کامل برای طراحی اپلیکیشنهای اینترنتی امن گرفته تا ابزار ساخت بازی، ابزار حرفهای دیتا ساینس، آموزش مدلهای قدرتمند هوش مصنوعی و غیره. برای اینکه بیشتر بتوانید با این روشها و تکنیکهای سطح بالا آشنا شوید و بهتر کار کنید در این قسمت چند مورد از فیلمهای آموزشی و پروژه محور پایتون را معرفی کردهایم.

تمام این فیلمها توسط فرادرس تهیه شدهاند. فرادرس به عنوان یکی از قدرتمندترین تولیدکنندگان محتوی آموزشی فارسی، دقت و حساسیت بالایی در کیفیت و زمان فیلمهای آموزشی خود دارد. این فیلمها توسط اساتید برجسته با کیفیت عالی و فهرستبندی دقیق تهیه شدهاند که به کاملترین شکل ممکن مخاطب را از روند جاری تولید پروژهها مطلع کنند.
- فیلم آموزش مقدماتی ساخت ربات تلگرام با Python با فرادرس
- فیلم آموزش پروژه محور پایتون همراه با طراحی گرافیکی با PyQt و بدون کدنویسی با QT Designe در فرادرس
- فیلم آموزش پیش بینی با الگوریتم های یادگیری ماشین در پایتون، پیش بینی نارسایی قلبی فرادرس
- فیلم آموزش فریمورک تحت وب Django با پایتون Python در فرادرس
در صورتی که نیاز به دیدن فیلمهای بیشتر داشتید با کلیک بر روی تصویر بالا یا مراجعه به وبسایت آموزشی فرادرس میتوانید از فهرست کامل سایر فیلمهای آموزشی فرادرس نیز دیدن فرمایید.
جمع بندی
در این مطلب از مجله فرادرس روش کار با متد Split در پایتون را یادگرفتیم و با انواع آرگومانهای موجود در این متد کار کردیم. دیدیم که چگونه میتوان با این متد رشتههای مختلف را با استفاده از آرگومانهای اختیاری یا بدون استفاده از آنها به زیر رشتههای تشکیل دهنده تقسیم کرد. متد Split در پایتون کاربردهای بسیار گوناگونی از تجزیه و تحلیل متن گرفته تا پیشپردازش دادهها برای استفاده توسط مدلهای هوش مصنوعی دارد.
این متد یکی از سادهترین و مفیدترین متدهایی است که هر برنامهنویس پایتونی باید بلد باشد. استفاده از این متد در پروژههای بزرگ و واقعی مربوط به کار با متنها و دادههای رشتهای بسیار پرکاربرد و مفید است. خواهید دید که چگونه عملیات سنگین و خستهکننده را در کثری از ثانیه به بهترین شکل ممکن انجام میدهد.