از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
پایتون: پیشوند و پسوند را از یک رشته حذف کنید
سرفصلهای مطلب
معرفی
راه های مختلفی برای حذف فضای خالی و سایر کاراکترها از یک رشته در پایتون وجود دارد. متداول ترین روش ها هستند strip()
، lstrip()
، و rstrip()
. از زمان پایتون نسخه 3.9، دو روش بسیار مورد انتظار برای حذف پیشوند یا پسوند یک رشته معرفی شد: removeprefix()
و removesuffix()
.
در این راهنما، ما به سرعت به روش استفاده از این روش ها و دلیل مفید بودن آنها خواهیم پرداخت. همچنین روش حذف پیشوند و پسوند نسخه های پایین تر از 3.9 پایتون را با کمک startswith()
و endswith()
مواد و روش ها.
اگر می خواهید در مورد آن بیشتر بدانید
strip()
،lstrip()
وrstrip()
، راهنمای ما برای روش strip() Python و انواع آن را بخوانید.
چرا از نوار () مواد و روش ها؟
ممکن است تعجب کنید که استفاده از آن چه اشکالی دارد lstrip()
و rstrip()
روش های برش پیشوندها و پسوندها؟ هیچ مشکلی با آنها وجود ندارد، با این حال، امکان حذف کل متن با این روش ها وجود دارد، به جای اینکه فقط اولین یا آخرین مورد را به تنهایی حذف کنید.
به عنوان مثال، بیایید سعی کنیم پیشوند را در یک رشته با یک الگوی مشترک حذف کنیم:
line = "xyyyxyxyxy"
print(line.lstrip("xy"))
این کد جفت رشته “xy” را به هر ترتیبی از سمت چپ شروع می کند. از آنجایی که رشته ورودی ما فقط شامل جفت های “xy” است، کل متن حذف می شود:
$ python strip_test.py
$
این strip()
اگر فقط اولین یا آخرین مورد را حذف کنید، روش ها آن را قطع نمی کنند n شخصیت ها. این نیاز در جامعه پایتون رایج بود و به عنوان یک پاسخ – removeprefix()
و removesuffix()
روش ها اضافه شد.
بسته به روی نسخه پایتون (< 3.9 یا > 3.9)، دو روش وجود دارد که می توان پیشوندها یا پسوندها را از یک رشته حذف کرد.
حذف پیشوند/پسوند در نسخه های پایتون >= 3.9
برای نسخه های پایتون 3.9 و بالاتر، removeprefix()
و removesuffix()
متدها به عنوان متدهایی هستند که در فضای نام تعبیه شده اند و برای حذف پیشوند و پسوند از رشته ها استفاده می شوند.
بیایید یک رشته طرح دار مانند قبل در نظر بگیریم:
line = "xy"*5+" | "+"yz"*5
prefix = "xy"
line_new = line.removeprefix(prefix)
print("Before: ", line, line.count(prefix))
print("After: ", line_new, line_new.count(prefix))
این کد پیشوند “xy” رشته اول را حذف می کند و تعدادی از وقوع پیشوند برای هر دو خط را در پایان نمایش می دهد. بیایید کد را اجرا کنیم:
$ python remove_prefix.py
Before: xyxyxyxyxy | yzyzyzyzyz 5
After: xyxyxyxy | yzyzyzyzyz 4
به طور مشابه، پسوند را می توان با استفاده از حذف حذف کرد removesuffix()
روش:
line = "xy"*5+" | "+"yz"*5
suffix = "yz"
line_new = line.removesuffix(suffix)
print("Before: ", line, line.count(suffix))
print("After: ", line_new, line_new.count(suffix))
اجرای این کد نتیجه می دهد:
$ python remove_suffix.py
Before: xyxyxyxyxy | yzyzyzyzyz 5
After: xyxyxyxyxy | yzyzyzyz 4
حذف پیشوند/پسوند در نسخه های پایتون < 3.9
در نسخه های پایتون کمتر از 3.9، این مشکل را می توان به طور غیر مستقیم با استفاده از ترکیبی از startswith()
و endswith()
روش ها، مخلوط با بریدن یک رشته. اگر پیشوند/پسوند وجود داشته باشد و بخشهای مربوطه را بتوان از رشته جدا کرد، اعتبارسنجی میکند.
در اینجا روش حذف پیشوند به راحتی از رشته آمده است:
line = "xy"*5+" | "+"yz"*5
prefix = "xy"
if line.startswith(prefix):
line_new = line(len(prefix):)
print("Before: ", line, line.count(prefix))
print("After: ", line_new, line_new.count(prefix))
پس از تأیید وجود پیشوند، رشته را برش می دهیم تا همه چیز به جز پیشوند را در خود داشته باشد و نتایج را برمی گردانیم. این خروجی زیر را می دهد که در آن پیشوند “xy” از رشته حذف می شود:
$ python remove_prefix_alt.py
Before: xyxyxyxyxy | yzyzyzyzyz 5
After: xyxyxyxy | yzyzyzyzyz 4
برای حذف پسوند، فقط ترتیب پارامترها را در نماد برش تنظیم می کنیم تا از انتهای رشته تکرار شود:
line = "xy"*5+" | "+"yz"*5
suffix = "yz"
if line.endswith(suffix):
line_new = line(:-len(suffix))
print("Before: ", line, line.count(suffix))
print("After: ", line_new, line_new.count(suffix))
مجدداً، ابتدا خط را با استفاده از علامت تأیید می کنیم endswith()
روشی برای بررسی اینکه آیا پسوند وجود دارد یا خیر. اگر این درست باشد، پسوند از رشته حذف می شود:
$ python remove_suffix_alt.py
Before: xyxyxyxyxy | yzyzyzyzyz 5
After: xyxyxyxyxy | yzyzyzyz 4
نتیجه
حذف پیشوندها و پسوندها می تواند در انجام پردازش متن بسیار مفید باشد. Python v3.9+ با دو تابع جدید برای این امکان ارائه می شود: removeprefix()
و removesuffix()
. وقتی از نسخه های پایتون کمتر از 3.9 استفاده می کنیم، می توانیم از آن استفاده کنیم startswith()
و endswith()
روش هایی با برش رشته برای حذف یک پیشوند و پسوند به ترتیب.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-09 23:27:04