Python: Kiểm tra xem chuỗi có chứa chuỗi con không

Việc kiểm tra xem một chuỗi có chứa chuỗi con hay không sẽ giúp khái quát hóa các điều kiện và tạo mã linh hoạt hơn. Ngoài ra, tùy thuộc vào mô hình miền của bạn – việc kiểm tra xem một chuỗi có chứa chuỗi con hay không cũng có thể cho phép bạn suy ra các trường của một đối tượng, nếu chuỗi đó tự mã hóa một trường.

Trong hướng dẫn này, chúng ta sẽ xem xét cách kiểm tra xem một chuỗi có chứa chuỗi con không bằng Python.

Sản phẩm in Nhà điều hành

Cách dễ nhất để kiểm tra xem chuỗi Python có chứa chuỗi con hay không là sử dụng in nhà điều hành.

Sản phẩm in toán tử được sử dụng để kiểm tra cấu trúc dữ liệu để trở thành thành viên trong Python. Nó trả về một Boolean (hoặc True or False). Để kiểm tra xem một chuỗi có chứa chuỗi con trong Python hay không bằng cách sử dụng in toán tử, chúng ta chỉ cần gọi nó trên siêu chuỗi:

fullstring = "StackAbuse"
substring = "tack"

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

Toán tử này là cách viết tắt để gọi một đối tượng __contains__ và cũng hoạt động tốt để kiểm tra xem một mục có tồn tại trong danh sách hay không. Điều đáng lưu ý là nó không an toàn, vì vậy nếu của chúng tôi fullstring đã chỉ vào None, một ngoại lệ sẽ được đưa ra:

TypeError: argument of type 'NoneType' is not iterable

Để tránh điều này, trước tiên bạn phải kiểm tra xem nó có trỏ tới None hay không:

fullstring = None
substring = "tack"

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

Sản phẩm String.index() Phương pháp

Kiểu String trong Python có một phương thức gọi là index() có thể được sử dụng để tìm chỉ mục bắt đầu của lần xuất hiện đầu tiên của chuỗi con trong chuỗi.

Nếu không tìm thấy chuỗi con, một ValueError ngoại lệ được ném ra, có thể được xử lý bằng khối thử ngoại trừ:

fullstring = "StackAbuse"
substring = "tack"

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

Phương pháp này hữu ích nếu bạn cũng cần biết vị trí của chuỗi con, thay vì chỉ sự tồn tại của nó trong chuỗi đầy đủ. Bản thân phương thức này trả về chỉ mục:

print(fullstring.index(substring))

Tuy nhiên - để kiểm tra xem một chuỗi có chứa chuỗi con hay không, đây là một cách tiếp cận dài dòng.

Phương thức String.find()

Lớp String có một phương thức khác gọi là find() cái nào thuận tiện hơn để sử dụng hơn index(), chủ yếu là vì chúng ta không cần phải lo lắng về việc xử lý bất kỳ trường hợp ngoại lệ nào.

If find() không tìm thấy kết quả khớp, nó trả về -1, nếu không nó trả về chỉ mục ngoài cùng bên trái của chuỗi con trong chuỗi lớn hơn:

Xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Dừng lệnh Googling Git và thực sự học nó!

fullstring = "StackAbuse"
substring = "tack"

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

Đương nhiên, nó thực hiện tìm kiếm tương tự như index() và trả về chỉ mục bắt đầu của chuỗi con trong chuỗi cha:

print(fullstring.find(substring))

Biểu thức chính quy (RegEx)

Biểu thức chính quy cung cấp một cách linh hoạt hơn (mặc dù phức tạp hơn) để kiểm tra các chuỗi xem có khớp mẫu hay không. Với Biểu thức chính quy, bạn có thể thực hiện tìm kiếm linh hoạt và mạnh mẽ thông qua không gian tìm kiếm lớn hơn nhiều, thay vì kiểm tra đơn giản như những lần trước.

Python được cung cấp kèm theo một mô-đun tích hợp cho các biểu thức chính quy, được gọi là re. Các re mô-đun chứa một chức năng gọi là search(), mà chúng ta có thể sử dụng để khớp với mẫu chuỗi con:

from re import search

fullstring = "StackAbuse"
substring = "tack"

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

Phương pháp này là tốt nhất nếu bạn cần một hàm so khớp phức tạp hơn, chẳng hạn như so khớp không phân biệt chữ hoa chữ thường hoặc nếu bạn đang xử lý các không gian tìm kiếm lớn. Mặt khác, nên tránh sự phức tạp và tốc độ chậm hơn của biểu thức chính quy đối với các trường hợp sử dụng khớp chuỗi con đơn giản.

Lưu ý

Bài viết này được viết bởi Jacob Stopak, một nhà tư vấn và phát triển phần mềm với niềm đam mê giúp đỡ người khác cải thiện cuộc sống của họ thông qua mã. Jacob là người tạo ra Cam kết ban đầu – một trang web dành riêng để giúp các nhà phát triển tò mò tìm hiểu cách mã hóa các chương trình yêu thích của họ. Dự án nổi bật của nó giúp mọi người học Git ở cấp độ mã.

Dấu thời gian:

Thêm từ xếp chồng lên nhau