Share on facebook
فیسبوک
Share on twitter
توئیتر
Share on linkedin
لینکدین
Share on telegram
تلگرام
Share on whatsapp
واتساپ

کاربرد split در پایتون (python) برای string (متن) ها

در این آموزش به صورت خیلی کامل به بررسی متد split در پایتون (python) می‌پردازیم! که برای string ها (رشته ها) مورد استفاده قرار می‌گیرد!

متن آموزشی متد split در پایتون (python)

در واقع split یک مِتُد (Method) است! که اگر برای یک string (به معنی «رشته» یا «متن») استفاده بشه، میاد اون رو به عناصرش میشکنه! (احتمالاً متوجه نشدید! ولی اشکال نداره، تووی مثال برامون ملموس‌تر خواهد بود!)

مثال

متغیر a رو به صورت زیر تعریف کردیم!

a="Sajjad Rahmani from Koolac Website"

همینطور که می‌بینید، این متغیر یک متن (رشته یا String) دَرِش ذخیره شده! و حالا اگر از متد split براش استفاده کنیم، میاد، اجزاء این بنده‌خدا (یعنی متغیر a) رو از هم تفکیک میکنه! (split یعنی تفکیک کردن!)

یعنی اون متن رو تبدیل میکنه به لیستی شامل موارد زیر!:

['Sajjad', 'Rahmani', 'from', 'Koolac', 'Website']

برای این کار کافیه بنویسیم:!

a="Sajjad Rahmani from Koolac Website"
print(a.split())
print(type(a.split()))

خط 1 که مشخصه، اومدیم هموووون متغیر a رو تعریف کردیم!

اما در خط 2 داریم میگیم a رو split کن! و بعد دست آخر چاپش کن!

در خط 3 هم میگیم نوعِ، این چیزی که split شده‌ی متغیر a است رو به ما نشون بده تا مطمئن بشیم این سجّاد رحمانی توی وبسایت کولاک درست گفت که خروجی یک لیست میشه!!

مطلب مشابه پیشنهادی:

آموزش لیست ها (lists) در پایتون (Python)

خروجی این قطعه کد میشه:!

['Sajjad,', 'Rahmani,', 'from,', 'Koolac,', 'Website']
<class 'list'>

یک سطح پیشرفته‌تر!

توی بخش قبلی، با کلیت متد split در پایتون (Python) آشنا شدیم! حالا میخوایم بریم سراغ پله بعد!

مثلاً متغیر b رو به صورت زیر در نظر بگیرید!

b="Sajjad, Rahmani, from, Koolac, Website"

قبول دارید اینجا، اعضای داخل این رشته (یا متن یا String) با «یه دووونه , و یه دووونه فاصله» از هم جدا شدن؟! باید قبول داشته باشید، علی‌الاصول!

حالا اینو باید چجوری به متد split در پایتون (python) بفهمونیم؟!

جواب اینه که کافیه به صورت زیر بنویسیم!:

print(b.split(", "))

دیگه اینجا، عملاً داریم میگیم، آقای پایتون (python) بیا متغیر b رو split کن (تفکیک کن!) منتهی حواست باشه که اووون چیزی که قراره مؤلفه‌ها رو از هم جداکنه «یه دونه , و یه دونه فاصله» است!

که خروجی بازهم میشه:!

['Sajjad', 'Rahmani', 'from', 'Koolac', 'Website']

الان می‌تونید برید تمرین آخر این آموزش رو حل کنید!

دو سطح پیشرفته‌تر!

دوباره متغیر c رو به صورت زیر در نظر بگیرید تا توضیح بدیم!

c="Sajjad-Rahmani-from-Koolac-Website"

خب! حالا قطعه کد زیر رو در نظر بگیرید:

print(c.split("-",1))

این میاد میگه، آقای پایتون (Python)! محبت کن مولفه‌های متغیر c رو از هم تفکیک کن! (با علم به این نکته که چیزی که جداکننده مولفه‌هاست همووون است!)

البته حواست باشه، فقط 1 دونه مولفه رو جداکن، بقیه رو بذار کنار!

احتمالاً می‌پرسید یعنی چی؟! من هم باید در جوابتون سوال بپرسم! به من بگید، مولفه اول اون متغیر c چیست؟! (علی‌الاصول جواب میدید: Sajjad !)

خب! پس این متد split در پایتون (Python) میاد Sajjad رو جدا میکنه و بقیه رو میذاره کنار! منظورم از «بقیه» رو در زیر آوردم:!

مولفه اول: Sajjad

بقیه: Rahmani-from-Koolac-Website

پس خروجی میشه:!

['Sajjad', 'Rahmani-from-Koolac-Website']

یه مثال دیگه:

به نظرتون اگر برای همون متغیر c بیایم بگیم:

print(c.split("-",3))

خروجی چی میشه؟! [اینو اول فکر کنید، بعد جواب من رو نگاه کنید! احتمالاً خودتون بتونید حل کنید!]

 

بله درسته! میاد 3 مولفه رو جدا میکنه و بقیه رو میذاره یه کنار!

مولفه اول: Sajjad

مولفه دوم: Rahmani

مولفه سوم: from

بقیه: Koolac-Website

که خروجیش میشه!:

['Sajjad', 'Rahmani', 'from', 'Koolac-Website']

مجموعه تمرین‌ها

تمرین 1: تفکیک (split کردن) در هر یک از موارد چگونه اتفاق می‌افتد؟!

c="I'm Sajjad Rahmani."

تمرین 2: در پایتون (python) چجوری می‌تونیم، رشته زیر رو براساس «:» از هم جدا کنیم؟! خروجی نهایی چی میشه؟!

c="I'm:Sajjad:Rahmani:"

تمرین 3: متغیر زیر را در نظر بگیرید و برای بندهای الف تا پ بگید که خروجی چی میشه و تحلیل‌شما از خروجی چیست؟! (یعنی تفسیر کنید که چرا خروجی فلان شد!)

c="Sajjad-Rahmani-from-Koolac-Website"

الف)

print(c.split("-",4))

ب)

print(c.split("-",0))

پ)

print(c.split("-",5))

جواب تمارین

تمرین1 !

["I'm", 'Sajjad', 'Rahmani.']

تمرین 2 !

["I'm", 'Sajjad', 'Rahmani', '']

تمرین 3 !

الف)!

['Sajjad', 'Rahmani', 'from', 'Koolac', 'Website']

گفته 4 تا مولفه رو تفکیک کن و بقیه رو بذار کنار! 4 تا مولفه میشه Sajjad و Rahmani و from و Koolac و بقیه هم میشه Website!

ب)!

['Sajjad-Rahmani-from-Koolac-Website']

یعنی 0 تا مولفه رو تفکیک کن و بقیه (یعنه همه‌ی رشته یا string) رو بذار کنار!

پ)!

['Sajjad', 'Rahmani', 'from', 'Koolac', 'Website']

یعنی 5 تا مولفه رو تفکیک کن و بقیه (که میشه 0 مولفه) رو بذار کنار!

هرچند سعی کردیم توضیح کاملی بدیم! اما اگر جایی رو متوجه نشدید، در بخش نظرات با ما در میون بذارید، قطعاً درخدمتتون هستیم!

پاسخ به سوالات شما!

در این بخش برخی از سوالاتی که کاربران عزیز کولاک پرسیدن رو مطرح می‌کنیم و جوابشون رو هم میدیم! چون ممکنه سوال شما هم باشه!

سوال 1

متن سوال: در واقع الان کد رو اینطوری نوشتم!:

a="python is good"
b=a.split("*")
print(b)

در خروجی تفکیک نشده جمله! یعنی دستور split فقط دابل کوتیشن با فاصله رو قبول میکنه؟!

جواب: نه! اینطوری نیست که split فقط محدود باش به چندتا چیز خاص! اما می‌دونید چرا کد شما درست کار نمی‌کنه! چون به پایتون (Python) بنده خدا می‌گید:!

“جناب پایتون! لطف کنید split کنید (تفکیک کنید) متنی که در a تعریف کردم رو! و مبنای تفکیک رو هم بذارید * !”

در پی دستور کاربر، python بنده خدا اطاعت میکنه و میره تا اون متن رو بر مبنای * تفکیک کنه! ولی خب شما اصلاً توی متنتون * نذاشتید که این بنده خدا بخواد بر اساس * تفکیک کنه! برای همین به نتیجه‌ای نمیرسه این بنده خدا! و همون متن خودتون رو بر می‌گردونه!

شما هم سوالی داشتید بپرسید! کولاک در خدمت شماست!

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

متد join در رشته ها (برای متصل کردن یک سری رشته استفاده میشه!)

آموزش رایگان و کامل زبان برنامه نویسی پایتون !

تابع lambda در پایتون [به شدت پرکاربرد است]!

تابع zip در پایتون [برای متناظر کردن چندین لیست، تاپل و غیره!]

آموزش تابع eval در پایتون !

آموزش تابع map [+ آموزش ترکیب آن با lambda function]!

آموزش محاسبه ضرب ماتریسی !

آموزش محاسبه دترمینان یک ماتریس !

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
ارسال دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. رویا گفت:

    ببخشید اگه کدی که در سوال 1 توضیح دادید بین فاصله ها * هم میبود باز هم جواب مشکل داشت.
    در واقع من وقتی دستور split رو در یک متغیر ذخیره می کنم جواب نمیده ولی اگر ذخیره نکنم جواب میده
    a=”python*is*good”
    b=a.split(“*”)
    print(b)

    • گروه آموزشی کولاک گفت:

      سلام، جسارتاً من منظورتون رو متوجه نشدم! اگر میشه یه بار دیگه کامل‌تر منظورتون رو بیان کنید! ببخشید!

  2. امیر گفت:

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

    a="python is good"
    b=a.split("*")
    print(b)

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

    • گروه آموزشی کولاک گفت:

      سلام مجدد امیر جان، خواهش می‌کنم، قربان شما و ممنون!
      در مورد سوالاتی که پرسیدین، چون به نظرم سوال خوبی بود و امکان داشت بقیه دوستان هم به این موضوع بر بخورن، انتهای همین آموزش، یه بخش اضافه کردم به اسم: “پاسخ به سوالات شما!” و سوال شما رو در “سوال 1” خودم مطرح کردم و بهش جواب دادم، امیدوارم واستون مفید بوده باشه! اگر بازهم سوالی بود، در خدمتیم!

  3. امیر گفت:

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

    • گروه آموزشی کولاک گفت:

      سلام امیر جان، ممنونم از اینکه ما رو قابل دونستی و از ما سوال می‌پرسی،
      من تا جایی که متوجه شدم، جوابتون رو میدم، اگر احساس کردین من درست متوجه نشدم، حتماً دوباره بگین تا جواب کامل تر بدم!
      مثلاً متن زیر رو در نظر بگیرید! (مثلاً فرض کنید در قالب متغیر a تعریفش می‌کنم!)

      "Sajjad Amir Koolac"

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

      print(a.split(" "))

      میاد خروجی زیر رو میده:
      [‘Sajjad’, ‘Amir’, ‘Koolac’]
      توجه کنید که بین “” در اووون پرانتزِ split یه فاصله گذاشتم!
      اگر این فاصله رو نذارم که اصلاً خطا میده! و میگه: empty separator ! به بیان دیگه میگه: «چرا میگی جدا کن و بعد نمیگی بر اساس چی جدا کنم؟!» و ناراحت میشه و خطا میده!
      حالا اگر توی پرانتز هیچی نذارید (یعنی حتی “” هم نذارید!) و بنویسید:

      print(a.split())

      به صورت پیش فرض، میاد براساس فاصله split میکنه! و بازهم خروجی زیر رو میده:
      [‘Sajjad’, ‘Amir’, ‘Koolac’]

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

آموزش کامل پایتون
آموزش کامل پایتون

+ جزوه اختصاصی (به تفکیک فیلم که دیگه نیازی نیست جزوه بنویسید)
+ دارای تمرین

+ مدرس: سجّاد رحمانی

توضیحات بیشتر