پایتون، تقسیم برای تقسیم رشته جدا شده با کاما، حذف فضای خالی و تبدیل به لیست

کسب و کار

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

در این قسمت ابتدا موارد زیر را توضیح می دهیم.

  • یک رشته را با یک جداکننده مشخص تقسیم کنید و آن را به عنوان یک لیست برگردانیدsplit()
  • کاراکترهای اضافی را از ابتدا و انتهای یک رشته حذف کنید.strip()
  • نماد درک فهرست برای اعمال توابع و متدها در عناصر لیست.

همچنین نشان می‌دهد که چگونه می‌توان فهرستی از رشته‌ها را که با فاصله و کاما از هم جدا شده‌اند، مانند شکل زیر ایجاد کرد.
one, two, three'

علاوه بر این موارد زیر را مورد بحث قرار خواهیم داد

  • چگونه می توان آن را به عنوان لیستی از اعداد دریافت کرد
  • نحوه استفاده از join() برای پیوستن به لیست و تبدیل مجدد آن به یک رشته

split():یک رشته را با یک جداکننده مشخص تقسیم کنید و آن را به عنوان یک لیست برگردانید

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

اگر آرگومان sep حذف شود و هیچ جداکننده ای مشخص نشده باشد، رشته را با فاصله تقسیم می کند و لیستی را برمی گرداند. فاصله ها و تب های متوالی نیز لیست را تقسیم می کنند، بنابراین اگر می خواهید لیستی از رشته های جدا شده از زبانه ایجاد کنید، می توانید از split() بدون آرگومان استفاده کنید.

s = 'one two three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one two        three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one\ttwo\tthree'
l = s.split()
print(l)
# ['one', 'two', 'three']

اگر یک جداکننده در آرگومان sep مشخص شده باشد، لیست را بر آن رشته تقسیم می کند و لیستی را برمی گرداند.

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

در مورد رشته های جدا شده با کاما، اگر فضای سفید اضافی وجود نداشته باشد، مشکلی وجود ندارد، اما اگر split() را با کاما به عنوان جداکننده رشته ای که با کاما + فاصله سفید از هم جدا شده است اجرا کنید، به پایان می رسید. با لیستی از رشته ها با فاصله سفید در ابتدا.

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

می توانید از کاما + فاصله به عنوان جداکننده به صورت زیر استفاده کنید، اما اگر تعداد فاصله ها در رشته اصلی متفاوت باشد، کار نخواهد کرد., '

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

روش رشته strip() که در ادامه توضیح داده خواهد شد، می تواند برای برخورد با دو فاصله استفاده شود.

strip():کاراکترهای اضافی را از ابتدا و انتهای یک رشته حذف کنید.

strip() روشی برای حذف کاراکترهای اضافی از ابتدا و انتهای یک رشته است.

اگر آرگومان حذف شود، یک رشته جدید با حذف کاراکترهای فضای خالی بازگردانده می شود. خود رشته اصلی تغییر نکرده است.

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

اگر رشته ای به عنوان آرگومان مشخص شود، کاراکترهای موجود در رشته حذف خواهند شد.

s = '-+-one-+-'
print(s.strip('-+'))
# one

در این حالت فضاها حذف نمی شوند. بنابراین، اگر می‌خواهید فضای سفید را نیز حذف کنید، مانند شکل زیر، رشته‌ای حاوی فاصله‌ها را به عنوان آرگومان ارسال کنید.-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

strip() هر دو سر را کنترل می کند، اما توابع زیر نیز در دسترس هستند.

  • lstrip():فقط ابتدا پردازش کنید
  • rstrip():فقط انتهای خط را پردازش کنید.

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

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

در اینجا، strip() را به لیستی که با تقسیم رشته با split() به دست می آید اعمال می کنیم. فضای خالی اضافی در رشته ای که با کاما از هم جدا شده و حاوی فضای خالی است را می توان برای ایجاد یک لیست حذف کرد.

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

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

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

اگر می خواهید یک لیست خالی برای یک رشته خالی دریافت کنید، می توانید یک شاخه شرطی در نماد درک لیست راه اندازی کنید.

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

one, , three'
همچنین، اگر یک عنصر جدا شده با کاما وجود نداشته باشد، همانطور که در بالا توضیح داده شد، روش اول آن را به عنوان یک عنصر رشته خالی فهرست می کند.

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

اگر می‌خواهید قسمت‌های از دست رفته را نادیده بگیرید، می‌توانید یک شاخه شرطی در نماد درک فهرست راه‌اندازی کنید.

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

به عنوان لیستی از اعداد دریافت کنید

اگر می خواهید یک رشته اعداد جدا شده با کاما را به عنوان لیستی از اعداد به جای رشته دریافت کنید، از int() یا float() استفاده کنید تا رشته را به عددی در نماد درک لیست تبدیل کنید.

s = '1, 2, 3, 4'
l = [x.strip() for x in s.split(',')]
print(l)
print(type(l[0]))
# ['1', '2', '3', '4']
# <class 'str'>

s = '1, 2, 3, 4'
l = [int(x.strip()) for x in s.split(',')]
print(l)
print(type(l[0]))
# [1, 2, 3, 4]
# <class 'int'>

join():یک لیست را ادغام کنید و آن را به عنوان یک رشته دریافت کنید

در الگوی مخالف، اگر می‌خواهید به لیستی بپیوندید و رشته‌ها را با یک جداکننده خاص از هم جدا کنید، از متد join() استفاده کنید.

اشتباه کردن آسان است، اما توجه داشته باشید که join() یک متد رشته ای است، نه یک متد لیست. لیست به عنوان یک آرگومان مشخص شده است.

s = 'one, two,  three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

print(','.join(l))
# one,two,three

print('::'.join(l))
# one::two::three

می توانید آن را به صورت زیر در یک خط بنویسید.

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

اگر فقط می خواهید یک جداکننده ثابت را تغییر دهید، جایگزین کردن آن با متد ()replace راحت تر است.

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three
Copied title and URL