Python: Dizenin Alt Dize İçerip içermediğini kontrol edin

Bir dizenin bir alt dize içerip içermediğini kontrol etmek, koşulları genelleştirmeye ve daha esnek kod oluşturmaya yardımcı olur. Ek olarak, etki alanı modelinize bağlı olarak, bir dizenin bir alt dize içerip içermediğini kontrol etmek, eğer bir dize kendi içinde bir alanı kodluyorsa, bir nesnenin alanlarını çıkarmanıza da olanak tanıyabilir.

Bu kılavuzda şunlara göz atacağız: bir dizenin bir alt dize içerip içermediğini kontrol etme Python'da.

The in Kullanım

Bir Python dizesinin bir alt dize içerip içermediğini kontrol etmenin en kolay yolu, in operatörü.

The in operatörü Python'da üyelik için veri yapılarını kontrol etmek için kullanılır. Bir Boole değeri döndürür (ya True or False). Python'da bir dizenin bir alt dize içerip içermediğini kontrol etmek için in operatörünü kullanmak için onu basitçe süperdizgiden çağırırız:

fullstring = "StackAbuse"
substring = "tack"

if substring in fullstring:
    print("Found!")
else:
    print("Not found!")

Bu operatör bir nesnenin çağrılmasının kısaltmasıdır. __contains__ yöntemidir ve ayrıca bir öğenin listede bulunup bulunmadığını kontrol etmek için de iyi çalışır. olduğunu belirtmekte fayda var null güvenli değil, yani eğer bizim fullstring işaret ediyordu Nonebir istisna atılır:

TypeError: argument of type 'NoneType' is not iterable

Bunu önlemek için öncelikle işaret edip etmediğini kontrol etmek isteyeceksiniz. None ya da değil:

fullstring = None
substring = "tack"

if fullstring != None and substring in fullstring:
    print("Found!")
else:
    print("Not found!")

The String.index() Yöntem

Python'daki String türünün adı verilen bir yöntemi vardır. index() bu, bir dizede bir alt dizenin ilk oluşumunun başlangıç ​​dizinini bulmak için kullanılabilir.

Alt dize bulunamazsa, bir ValueError try-hariç-else bloğuyla ele alınabilecek bir istisna atılır:

fullstring = "StackAbuse"
substring = "tack"

try:
    fullstring.index(substring)
except ValueError:
    print("Not found!")
else:
    print("Found!")

Bu yöntem, alt dizenin tam dize içindeki varlığının aksine, konumunu da bilmeniz gerekiyorsa kullanışlıdır. Yöntemin kendisi dizini döndürür:

print(fullstring.index(substring))

Ancak bir dizgenin bir alt dizge içerip içermediğini kontrol etmek adına bu ayrıntılı bir yaklaşımdır.

String.find() Yöntemi

String sınıfının adında başka bir yöntemi var find() hangisinin kullanımı daha uygundur index(), çünkü herhangi bir istisnayı ele alma konusunda endişelenmemize gerek yok.

If find() bir eşleşme bulamazsa -1 değerini döndürür, aksi takdirde daha büyük dizedeki alt dizenin en soldaki dizinini döndürür:

En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!

fullstring = "StackAbuse"
substring = "tack"

if fullstring.find(substring) != -1:
    print("Found!")
else:
    print("Not found!")

Doğal olarak aynı aramayı gerçekleştirir. index() ve üst dize içindeki alt dizenin başlangıcının dizinini döndürür:

print(fullstring.find(substring))

Normal İfadeler (RegEx)

Düzenli ifadeler, dizelerin kalıp eşleşmesi açısından kontrol edilmesi için daha esnek (ancak daha karmaşık) bir yol sağlar. Normal İfadeler ile öncekiler gibi basit kontroller yerine, çok daha geniş arama alanları üzerinden esnek ve güçlü aramalar gerçekleştirebilirsiniz.

Python, düzenli ifadeler için yerleşik bir modülle birlikte gelir. re. re modül adı verilen bir işlevi içerir search()bunu bir alt dize modeliyle eşleştirmek için kullanabiliriz:

from re import search

fullstring = "StackAbuse"
substring = "tack"

if search(substring, fullstring):
    print "Found!"
else:
    print "Not found!"

Büyük/küçük harfe duyarlı olmayan eşleştirme gibi daha karmaşık bir eşleştirme işlevine ihtiyacınız varsa veya büyük arama alanlarıyla uğraşıyorsanız bu yöntem en iyisidir. Aksi takdirde, basit alt dize eşleştirme kullanım durumları için regex'in komplikasyonundan ve daha yavaş hızından kaçınılmalıdır.

Yazar Hakkında

Bu makale, kod aracılığıyla başkalarının hayatlarını iyileştirmelerine yardımcı olma tutkusuna sahip bir yazılım danışmanı ve geliştiricisi olan Jacob Stopak tarafından yazılmıştır. Yakup'un yaratıcısı İlk Taahhüt – meraklı geliştiricilerin en sevdikleri programların nasıl kodlandığını öğrenmelerine yardımcı olmaya adanmış bir site. Öne çıkan projesi insanlara yardımcı oluyor Git'i öğren kod düzeyinde.

Zaman Damgası:

Den fazla Yığın kötüye kullanımı