از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش تقسیم رشته روی جداکننده های متعدد در پایتون
سرفصلهای مطلب
معرفی
در میان بسیاری از عملیات رشته، تقسیم یک رشته یکی از موارد مهم است که قابلیت تقسیم یک متن بزرگ و ترکیبی را به اجزای کوچکتر و قابل مدیریت ارائه می دهد. به طور معمول، ما از یک جداکننده منفرد مانند کاما، فاصله یا یک کاراکتر خاص برای این منظور استفاده می کنیم. اما اگر بخواهید یک رشته را بر اساس تقسیم کنید چه می شود روی جداکننده های متعدد؟
موقعیتی را تصور کنید که در آن با داده های متنی با جداکننده های مختلف سر و کار دارید، یا در حال تجزیه یک فایل پیچیده با جداکننده های ناسازگار هستید. اینجاست که پایتون توانایی تقسیم رشته ها را دارد روی جداکننده های متعدد واقعا می درخشد.
در این مقاله، مروری جامع از تکنیکهای مختلف تقسیم رشتههای چند جداکننده در پایتون به شما ارائه میکنیم. برای رسیدن به این هدف، روشهای اصلی پایتون، عبارات منظم و حتی کتابخانههای خارجی مانند پانداها را بررسی میکنیم.
را str.split() روش می تواند رشته ها را تقسیم کند روی فقط یک جداکننده
را str.split()
متد، رویکرد داخلی پایتون برای تقسیم یک رشته به لیستی از زیررشتهها است. به صورت پیش فرض، str.split()
از فضای خالی (فضاها، برگه ها و خطوط جدید) به عنوان جداکننده استفاده می کند. با این حال، می توانید هر کاراکتر یا دنباله ای از کاراکترها را به عنوان جداکننده مشخص کنید:
text = "Python is a powerful language"
words = text.split()
print(words)
اجرای این کد منجر به موارد زیر می شود:
('Python', 'is', 'a', 'powerful', 'language')
در این مورد، رشته را با استفاده از جداکننده پیشفرض – فضای سفید به کلمات تقسیم کردهایم. اما اگر بخواهیم از یک جداکننده متفاوت استفاده کنیم چه؟ ما می توانیم آن را به عنوان یک استدلال به split()
:
text = "Python,is,a,powerful,language"
words = text.split(',')
print(words)
که به ما می دهد:
('Python', 'is', 'a', 'powerful', 'language')
در حالی که str.split()
برای تقسیم رشته ها با یک جداکننده بسیار مفید است، زمانی که نیاز به تقسیم رشته داریم کوتاه می شود. روی جداکننده های متعدد برای مثال، اگر رشتهای داشته باشیم که کلمات آن با کاما، نقطه ویرگول و/یا فاصله از هم جدا شدهاند، str.split()
نمی تواند همه این مرزها را به طور همزمان مدیریت کند.
در بخشهای آینده، تکنیکهای پیچیدهتری را برای تقسیم رشتهها بررسی خواهیم کرد روی جداکننده های متعدد در پایتون
استفاده از عبارات منظم – the re.split() روش
برای مقابله با موضوع تقسیم یک رشته روی چند جداکننده، پایتون در اختیار ما قرار می دهد re
ماژول (عبارات منظم). به طور خاص، re.split()
تابع ابزار موثری است که به ما امکان می دهد یک رشته را با استفاده از جداکننده های متعدد تقسیم کنیم.
عبارات منظم (یا regex) دنباله ای از کاراکترها هستند که یک الگوی جستجو را تعریف می کنند. اینها بسیار متنوع هستند و برای کارهای پیچیده پردازش متن عالی هستند.
رشته زیر را در نظر بگیرید:
text = "Python;is,a powerful:language"
اگر می خواهید کلمات را از آن استخراج کنید، باید چندین جداکننده را در نظر بگیرید. بیایید نگاهی به روش استفاده از آن بیندازیم re.split()
برای تقسیم یک رشته بر اساس روی جداکننده های متعدد:
import re
text = "Python;is,a powerful:language"
words = re.split(';|,| ', text)
print(words)
این به ما می دهد:
('Python', 'is', 'a', 'powerful', 'language')
ما استفاده کردیم re.split()
روشی برای تقسیم رشته در هر رخداد نقطه ویرگول (;
کاما (,
)، یا فضا (
). را |
نماد در عبارات منظم به معنای “یا” استفاده می شود ;|,|
می تواند به عنوان “نقطه ویرگول یا کاما یا فاصله” خوانده شود.
این تابع تطبیق پذیری و قدرت بسیار بیشتری را نشان می دهد str.split()
، به ما این امکان را می دهد که به راحتی یک رشته را تقسیم کنیم روی جداکننده های متعدد
در بخش بعدی، روش پایتونیک دیگری برای تقسیم رشتهها با استفاده از جداکنندههای متعدد، با استفاده از translate()
و maketrans()
مواد و روش ها.
استفاده کردن ترجمه کردن() و maketrans() مواد و روش ها
پایتون str
کلاس دو روش قدرتمند برای نگاشت و جایگزینی کاراکتر ارائه می دهد: maketrans()
و translate()
. هنگامی که به صورت ترکیبی مورد استفاده قرار می گیرند، روشی کارآمد برای جایگزینی چند جداکننده با یک جداکننده مشترک ارائه می دهند که به ما امکان استفاده از آن را می دهد str.split()
به طور موثر
را maketrans()
متد یک جدول ترجمه را برمیگرداند که میتوان از آن استفاده کرد translate()
روشی برای جایگزینی کاراکترهای خاص بنابراین، بیایید نگاهی به روش استفاده از این دو روش برای مطابقت با نیازهای خود بیاندازیم.
اول از همه، باید یک جدول ترجمه ایجاد کنیم که نقطه ویرگول ها را ترسیم کند (;
) و کولون (:
) به کاما (,
):
text = "Python;is,a powerful:language"
table = text.maketrans(";:", ",,")
سپس از translate()
روش اعمال این جدول بر روی متن ما. این همه نقطه ویرگول و دو نقطه با کاما جایگزین می شود:
text = text.translate(table)
در نهایت می توانیم استفاده کنیم str.split(',')
برای تقسیم متن به کلمات و print کلمات استخراج شده:
words = text.split(',')
print(words)
این منجر به:
('Python', 'is', 'a powerful', 'language')
توجه داشته باشید: این رویکرد به ویژه زمانی مفید است که میخواهید جداکنندهها را در یک رشته قبل از تقسیم آن استاندارد کنید.
در بخش بعدی، روش استفاده از یک کتابخانه خارجی، پانداها، برای تقسیم رشته ها را بررسی خواهیم کرد. روی جداکننده های متعدد
استفاده از کتابخانه پانداها
پانداها، یک کتابخانه قدرتمند دستکاری داده ها در پایتون، می توانند برای تقسیم رشته ها نیز استفاده شوند روی جداکننده های متعدد آن str.split()
تابع قادر به مدیریت regex است و آن را به ابزار مؤثر دیگری برای این کار تبدیل می کند.
در حالی که روشهای رشته داخلی برای دادههای کوچکتر کارآمد هستند، وقتی با مجموعه دادههای بزرگ (مانند DataFrame) کار میکنید، استفاده از Pandas برای تقسیم رشته میتواند انتخاب بهتری باشد. نحو نیز کاملا بصری است.
در اینجا روش استفاده از پانداها برای تقسیم یک رشته آمده است روی جداکننده های متعدد:
import pandas as pd
df = pd.DataFrame({'Text': ('Python;is,a powerful:language')})
df = df('Text').str.split(';|,|:', expand=True)
print(df)
این به ما می دهد:
0 1 2 3 4
0 Python is a powerful language
ما ابتدا با متن خود یک DataFrame ایجاد کردیم. سپس از آن استفاده کردیم str.split()
تابع، عبور در یک الگوی regex مشابه آنچه ما با آن استفاده کردیم re.split()
. را expand=True
آرگومان باعث می شود که تابع یک DataFrame برگرداند که در آن هر رشته تقسیم یک ستون جداگانه است.
توجه داشته باشید: اگرچه این روش به جای فهرست، DataFrame را برمی گرداند، اما زمانی که در حال کار در اکوسیستم پاندا هستید، می تواند بسیار مفید باشد.
مقایسه عملکرد
هنگام انتخاب روشی برای تقسیم رشته ها روی جداکننده های متعدد، عملکرد می تواند یک عامل مهم باشد، به ویژه هنگام کار با مجموعه داده های بزرگ. بیایید عملکرد روش هایی را که در مورد آن صحبت کردیم بررسی کنیم.
ساخته شده در str.split()
روش برای مجموعه دادههای کوچکتر و یک جداکننده منفرد کاملاً کارآمد است، اما عملکرد آن هنگام استفاده با جداکنندههای متعدد و مجموعه دادههای بزرگ به دلیل پردازش اضافی لازم، آسیب میبیند.
را re.split()
روش همه کاره و نسبتاً کارآمد است، زیرا می تواند چندین جداکننده را به خوبی مدیریت کند. با این حال، عملکرد آن ممکن است در هنگام برخورد با حجم عظیمی از داده ها نیز کاهش یابد، زیرا عبارات منظم می توانند محاسباتی فشرده باشند.
استفاده کردن translate()
و maketrans()
می تواند یک راه کارآمد برای مدیریت چند جداکننده باشد، به خصوص زمانی که می خواهید قبل از تقسیم جداکننده ها را استاندارد کنید. با این حال، شامل یک مرحله اضافی است که می تواند بر عملکرد با مجموعه داده های بزرگ تأثیر بگذارد.
در نهایت، در حالی که کتابخانه Pandas یک روش بسیار کارآمد و انعطاف پذیر برای تقسیم رشته ها ارائه می دهد روی چندین جداکننده، ممکن است برای کارهای ساده و کوچک بیش از حد باشد. سربار ایجاد یک DataFrame می تواند بر عملکرد هنگام کار با داده های کوچکتر تأثیر بگذارد، اما در مدیریت مجموعه داده های بزرگ برتری دارد.
در نتیجه، بهترین روش برای استفاده بستگی دارد روی مورد استفاده خاص شما برای مجموعه دادهها و وظایف کوچک، روشهای داخلی پایتون ممکن است مناسبتر باشد، در حالی که برای کارهای بزرگتر و پیچیدهتر دستکاری دادهها، پانداها میتوانند راه حلی باشند.
نتیجه
به خصوص جدا شدن رشته روی چند جداکننده، یک عملیات رایج و در عین حال حیاتی در پایتون است. این به عنوان ستون فقرات در بسیاری از کارهای پردازش متن، تمیز کردن داده ها و تجزیه و تحلیل عمل می کند. همانطور که دیدیم، پایتون طیف وسیعی از تکنیک ها را برای این کار ارائه می دهد که هر کدام نقاط قوت و ضعف خاص خود را دارند. از ساخته شده در str.split()
، به عبارت های منظم همه کاره، نگاشت کاراکتر translate()
و maketrans()
روشها و حتی کتابخانه خارجی پانداها، پایتون راهحلهایی را برای هر پیچیدگی و اندازه داده ارائه میدهد.
مهم است که روش های مختلف موجود را درک کنید و یکی را انتخاب کنید که به بهترین وجه با نیازهای خاص شما مطابقت دارد. خواه سادگی، تطبیق پذیری یا عملکرد باشد، ابزار پایتون برای تقسیم رشته می تواند نیازهای مختلف را برآورده کند.
امیدواریم این مقاله به شما کمک کند تا در مدیریت و دستکاری رشته ها در پایتون مهارت بیشتری پیدا کنید.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-31 10:57:04