Hướng dẫn python check if any substring in string - python kiểm tra xem có chuỗi con nào trong chuỗi không

Hãy thử bài kiểm tra này:

any(substring in string for substring in substring_list)

Nó sẽ trả về True nếu bất kỳ chất nền nào trong

from itertools import imap
any(imap(string.__contains__, substring_list)) 
0 được chứa trong
from itertools import imap
any(imap(string.__contains__, substring_list)) 
1.

Lưu ý rằng có một sự tương tự Python của câu trả lời của Marc Gravell trong câu hỏi được liên kết:

from itertools import imap
any(imap(string.__contains__, substring_list)) 

Trong Python 3, thay vào đó, bạn có thể sử dụng

from itertools import imap
any(imap(string.__contains__, substring_list)) 
2 trực tiếp:

any(map(string.__contains__, substring_list))

Có lẽ phiên bản trên sử dụng biểu thức máy phát là rõ ràng hơn mặc dù.

Trong hướng dẫn này, chúng ta sẽ xem cách kiểm tra xem một chuỗi có chứa một chuỗi con trong Python không. Như thường lệ, mỗi cách tiếp cận chúng tôi sẽ đề cập có những ưu và nhược điểm khác nhau.

Các nhà điều hành trong

Cách dễ nhất để kiểm tra xem chuỗi Python có chứa chất nền là sử dụng toán tử

from itertools import imap
any(imap(string.__contains__, substring_list)) 
3 không.

Toán tử

from itertools import imap
any(imap(string.__contains__, substring_list)) 
3 được sử dụng để kiểm tra các cấu trúc dữ liệu để thành viên trong Python. Nó trả về một boolean (hoặc True hoặc
from itertools import imap
any(imap(string.__contains__, substring_list)) 
6). Để kiểm tra xem một chuỗi có chứa chuỗi con trong Python bằng toán tử
from itertools import imap
any(imap(string.__contains__, substring_list)) 
3 hay không, chúng tôi chỉ cần gọi nó trên SuperString:

fullstring = "StackAbuse"
substring = "tack"

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

Toán tử này là tốc ký để gọi phương thức

from itertools import imap
any(imap(string.__contains__, substring_list)) 
8 của đối tượng 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 không. Điều đáng chú ý là nó không an toàn, vì vậy nếu
from itertools import imap
any(imap(string.__contains__, substring_list)) 
9 của chúng tôi chỉ ra
any(map(string.__contains__, substring_list))
0, một ngoại lệ sẽ bị ném:

TypeError: argument of type 'NoneType' is not iterable

Để tránh điều này, trước tiên bạn sẽ muốn kiểm tra xem nó có chỉ vào

any(map(string.__contains__, substring_list))
0 hay không:

fullstring = None
substring = "tack"

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

Phương thức chuỗi.index ()

Loại chuỗi trong Python có một phương thức gọi là

any(map(string.__contains__, substring_list))
2 có thể được sử dụng để tìm chỉ số bắt đầu của lần xuất hiện đầu tiên của chuỗi con trong chuỗi.

Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!

Nếu không tìm thấy chất nền, ngoại lệ

any(map(string.__contains__, substring_list))
3 được ném, có thể được xử lý với khối Expet-Offcept-Else:

fullstring = "StackAbuse"
substring = "tack"

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

Phương pháp này rất hữu ích nếu bạn cần biết vị trí của chuỗi con, trái ngược với sự tồn tại của nó trong toàn bộ chuỗi.

Phương thức chuỗi.find ()

Loại chuỗi có một phương thức khác được gọi là

any(map(string.__contains__, substring_list))
4 thuận tiện hơn để sử dụng so với
any(map(string.__contains__, substring_list))
2, vì chúng ta không cần phải lo lắng về việc xử lý bất kỳ ngoại lệ nào.

Nếu

any(map(string.__contains__, substring_list))
6 không tìm thấy một trận đấu, nó sẽ trả về -1, nếu không, nó sẽ trả về chỉ số bên trái nhất của chuỗi con trong chuỗi lớn hơn.

fullstring = "StackAbuse"
substring = "tack"

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

Nếu bạn muốn tránh cần phải bắt lỗi, thì phương pháp này sẽ được ưa chuộng hơn

any(map(string.__contains__, substring_list))
2.

Biểu thức thông thường (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 để khớp mẫu. Python được vận chuyển với một mô-đun tích hợp cho các biểu thức thông thường, được gọi là

any(map(string.__contains__, substring_list))
8. Mô -đun
any(map(string.__contains__, substring_list))
8 chứa một hàm gọi là
fullstring = "StackAbuse"
substring = "tack"

if substring in fullstring:
    print("Found!")
else:
    print("Not found!")
0, chúng ta có thể sử dụng để phù hợp với mẫu 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 chức năng phù hợp phức tạp hơn, như phù hợp với trường hợp không nhạy cảm. Nếu không, nên tránh tốc độ biến chứng và tốc độ chậm hơn cho các trường hợp sử dụng phù hợp với chất nền đơn giản.

Bài viết này được viết bởi Jacob Stopak, một nhà tư vấn và nhà 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 các chương trình yêu thích của họ được mã hóa. Dự án nổi bật của nó giúp mọi người học Git ở cấp độ mã.