از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
پایتون: بررسی کنید که آیا رشته حاوی رشته فرعی است یا خیر
سرفصلهای مطلب
بررسی اینکه آیا یک رشته دارای یک رشته فرعی است یا خیر، به تعمیم شرط ها و ایجاد کد انعطاف پذیرتر کمک می کند. علاوه بر این، بسته به روی مدل دامنه شما – بررسی اینکه آیا یک رشته حاوی یک رشته فرعی است ممکن است به شما امکان می دهد که فیلدهای یک شی را استنتاج کنید، اگر رشته ای فیلد را به خودی خود رمز می کند.
در این راهنما، نگاهی به چگونه بررسی کنیم که آیا یک رشته دارای یک رشته فرعی است یا خیر در پایتون
را که در اپراتور
ساده ترین راه برای بررسی اینکه آیا یک رشته پایتون دارای زیررشته است یا خیر، استفاده از آن است in
اپراتور.
را in
عملگر برای بررسی ساختارهای داده برای عضویت در پایتون استفاده می شود. یک Boolean (یا True
یا False
). برای بررسی اینکه آیا یک رشته دارای زیررشته در پایتون با استفاده از in
اپراتور، ما به سادگی آن را فراخوانی می کنیم روی ابر ریسمان:
fullstring = "rasanegar"
substring = "tack"
if substring in fullstring:
print("Found!")
else:
print("Not found!")
این عملگر مختصری برای فراخوانی یک شی است __contains__
روش، و همچنین برای بررسی اینکه آیا یک آیتم در یک لیست وجود دارد به خوبی کار می کند. شایان ذکر است که این است بی خطر نیست، بنابراین اگر ما fullstring
اشاره می کرد به None
، یک استثنا ایجاد می شود:
TypeError: argument of type 'NoneType' is not iterable
برای جلوگیری از این، ابتدا باید بررسی کنید که آیا به آن اشاره دارد یا خیر None
یا نه:
fullstring = None
substring = "tack"
if fullstring != None and substring in fullstring:
print("Found!")
else:
print("Not found!")
را String.index() روش
نوع String در پایتون متدی به نام دارد index()
که می تواند برای یافتن شاخص شروع اولین وقوع یک زیر رشته در یک رشته استفاده شود.
اگر رشته فرعی پیدا نشد، a ValueError
استثنا پرتاب می شود که می تواند با یک بلوک try-except-else مدیریت شود:
fullstring = "rasanegar"
substring = "tack"
try:
fullstring.index(substring)
except ValueError:
print("Not found!")
else:
print("Found!")
این روش در صورتی مفید است که شما همچنین نیاز به دانستن موقعیت رشته فرعی دارید، برخلاف وجود آن در رشته کامل. خود متد ایندکس را برمی گرداند:
print(fullstring.index(substring))
اگرچه – به منظور بررسی اینکه آیا یک رشته دارای یک رشته فرعی است، این یک رویکرد پرمخاطب است.
متد String.find().
کلاس String متد دیگری به نام دارد find()
که استفاده از آن راحت تر از index()
، عمدتاً به این دلیل که ما نیازی به نگرانی در مورد رسیدگی به هیچ استثنایی نداریم.
اگر find()
منطبق را پیدا نمی کند، -1 را برمی گرداند، در غیر این صورت، سمت چپ ترین شاخص زیررشته را در رشته بزرگتر برمی گرداند:
fullstring = "rasanegar"
substring = "tack"
if fullstring.find(substring) != -1:
print("Found!")
else:
print("Not found!")
طبیعتاً همان جستجو را انجام می دهد index()
و شاخص شروع رشته فرعی را در رشته والد برمی گرداند:
print(fullstring.find(substring))
عبارات منظم (RegEx)
عبارات منظم روشی انعطافپذیرتر (البته پیچیدهتر) برای بررسی رشتهها برای تطابق الگو ارائه میکنند. با Regular Expressions، میتوانید جستجوهای انعطافپذیر و قدرتمندی را از طریق فضاهای جستجوی بسیار بزرگتر انجام دهید، نه بررسیهای ساده، مانند موارد قبلی.
پایتون با یک ماژول داخلی برای عبارات منظم ارسال می شود که نام دارد re
. را re
ماژول حاوی تابعی به نام search()
، که می توانیم از آن برای مطابقت با یک الگوی زیر رشته ای استفاده کنیم:
from re import search
fullstring = "rasanegar"
substring = "tack"
if search(substring, fullstring):
print "Found!"
else:
print "Not found!"
اگر به یک تابع تطبیق پیچیده تری نیاز دارید، مانند تطبیق بدون حساس به حروف بزرگ، یا اگر با فضاهای جستجوی بزرگ سر و کار دارید، این روش بهترین است. در غیر این صورت باید از پیچیدگی و سرعت آهسته تر regex برای موارد استفاده ساده زیر رشته تطبیق اجتناب شود.
درباره نویسنده
این مقاله توسط Jacob Stopak، مشاور و توسعهدهنده نرمافزار با علاقه به کمک به دیگران برای بهبود زندگی خود از طریق کد نوشته شده است. یعقوب خالق است تعهد اولیه – سایتی اختصاص داده شده برای کمک به توسعه دهندگان کنجکاو در یادگیری روش کدگذاری برنامه های مورد علاقه آنها. پروژه برجسته آن به مردم کمک می کند Git را یاد بگیرید در سطح کد
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-02 06:51:03