وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

پایتون: بررسی کنید که آیا رشته حاوی رشته فرعی است یا خیر

0 4
زمان لازم برای مطالعه: 3 دقیقه


بررسی اینکه آیا یک رشته دارای یک رشته فرعی است یا خیر، به تعمیم شرط ها و ایجاد کد انعطاف پذیرتر کمک می کند. علاوه بر این، بسته به روی مدل دامنه شما – بررسی اینکه آیا یک رشته حاوی یک رشته فرعی است ممکن است به شما امکان می دهد که فیلدهای یک شی را استنتاج کنید، اگر رشته ای فیلد را به خودی خود رمز می کند.

در این راهنما، نگاهی به چگونه بررسی کنیم که آیا یک رشته دارای یک رشته فرعی است یا خیر در پایتون

را که در اپراتور

ساده ترین راه برای بررسی اینکه آیا یک رشته پایتون دارای زیررشته است یا خیر، استفاده از آن است 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() که می تواند برای یافتن شاخص شروع اولین وقوع یک زیر رشته در یک رشته استفاده شود.

پیشنهاد می‌کنیم بخوانید:  روش تبدیل لیست به رشته CSV در پایتون

اگر رشته فرعی پیدا نشد، 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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید