Cách kiểm tra xem một chuỗi Python có chứa một chuỗi con hay không
11/08/2022 03:01
Nếu bạn là người mới lập trình hoặc đến từ một ngôn ngữ lập trình khác ngoài Python, bạn có thể đang tìm cách tốt nhất để kiểm tra xem một chuỗi có chứa một chuỗi khác trong Python hay không. Hãy cùng chúng tôi tìm hiểu ngay trong bài viết này nhé
Nếu bạn là người mới lập trình hoặc đến từ một ngôn ngữ lập trình khác ngoài Python, bạn có thể đang tìm cách tốt nhất để kiểm tra xem một chuỗi có chứa một chuỗi khác trong Python hay không.
Việc xác định các substring như vậy rất hữu ích khi bạn đang làm việc với nội dung văn bản hoặc sau khi bạn nhận được thông tin đầu vào của người dùng . Bạn có thể muốn thực hiện các hành động khác nhau trong chương trình của mình tùy thuộc vào việc có một chuỗi con hay không.
Trong hướng dẫn này, bạn sẽ tập trung vào cách Pythonic nhất để giải quyết nhiệm vụ này, sử dụng toán tử thành viênin
. Ngoài ra, bạn sẽ học cách xác định các phương thức chuỗi phù hợp cho các trường hợp sử dụng có liên quan, nhưng khác nhau.
Cuối cùng, bạn cũng sẽ học cách tìm chuỗi con trong cột gấu trúc . Điều này rất hữu ích nếu bạn cần tìm kiếm thông qua dữ liệu từ tệp CSV. Bạn có thể sử dụng cách tiếp cận mà bạn sẽ học trong phần tiếp theo, nhưng nếu bạn đang làm việc với dữ liệu dạng bảng , tốt nhất là tải dữ liệu vào DataFrame của gấu trúc và tìm subsstring trong pandas
Cách xác nhận rằng một chuỗi Python có chứa một chuỗi khác
Nếu bạn cần kiểm tra xem một chuỗi có chứa chuỗi con hay không, hãy sử dụng toán tử thành viên của Python in
. Trong Python, đây là cách được khuyến nghị để xác nhận sự tồn tại của một chuỗi con trong một chuỗi:
>>> raw_file_content = """Hi there and welcome. ... This is a special hidden file with a SECRET secret. ... I don't want to tell you The Secret, ... but I do want to secretly tell you that I have one.""" >>> "secret" in raw_file_content True
Toán tử in
thành viên cung cấp cho bạn một cách nhanh chóng và dễ đọc để kiểm tra xem chuỗi con có trong một chuỗi hay không. Bạn có thể nhận thấy rằng dòng mã gần như đọc giống như tiếng Anh.
Khi bạn sử dụng in
, biểu thức trả về giá trị Boolean :
True
nếu Python tìm thấy chuỗi conFalse
nếu Python không tìm thấy chuỗi con
Bạn có thể sử dụng cú pháp trực quan này trong các câu lệnh có điều kiện để đưa ra quyết định trong mã của mình:
>>> if "secret" in raw_file_content: ... print("Found!") ... Found!
Trong đoạn mã này, bạn sử dụng toán tử thành viên để kiểm tra xem có phải "secret"
là một chuỗi con của raw_file_content
. Nếu đúng như vậy, thì bạn sẽ in một tin nhắn tới thiết bị đầu cuối. Bất kỳ mã thụt lề nào sẽ chỉ thực thi nếu chuỗi Python mà bạn đang kiểm tra chứa chuỗi con mà bạn cung cấp.
Toán tử thành viên in
là người bạn tốt nhất của bạn nếu bạn chỉ cần kiểm tra xem một chuỗi Python có chứa một chuỗi con hay không.
Tuy nhiên, nếu bạn muốn biết thêm về chuỗi con thì sao? Nếu bạn đọc qua văn bản được lưu trữ trong raw_file_content
, thì bạn sẽ nhận thấy rằng chuỗi con xuất hiện nhiều lần và thậm chí ở các biến thể khác nhau!
Python đã tìm thấy những lần xuất hiện nào trong số này? Viết hoa có tạo ra sự khác biệt không? Bao lâu thì chuỗi con hiển thị trong văn bản? Và vị trí của những chuỗi con này là gì? Nếu bạn cần câu trả lời cho bất kỳ câu hỏi nào trong số này, hãy tiếp tục đọc.
Tổng quát hóa séc của bạn bằng cách loại bỏ phân biệt chữ hoa chữ thường
Chuỗi Python có phân biệt chữ hoa chữ thường. Nếu chuỗi con mà bạn cung cấp sử dụng cách viết hoa khác với cùng một từ trong văn bản của bạn, thì Python sẽ không tìm thấy nó. Ví dụ: nếu bạn kiểm tra từ viết thường "secret"
trên phiên bản viết hoa tiêu đề của văn bản gốc, kiểm tra toán tử thành viên sẽ trả về False
:
>>> file_content_title = """Hi There And Welcome. ... This Is A Special Hidden File With A Secret Secret. ... I Don't Want To Tell You The Secret, ... But I Do Want To Secretly Tell You That I Have One.""" >>> "secret" in file_content_title False
Mặc dù thực tế là từ bí mật xuất hiện nhiều lần trong văn bản viết hoa tiêu đề file_content_title
, nó không bao giờ hiển thị ở tất cả các chữ thường. Đó là lý do tại sao việc kiểm tra mà bạn thực hiện với nhà điều hành thành viên trả về False
. Python không thể tìm thấy toàn bộ chuỗi chữ thường "secret"
trong văn bản được cung cấp.
Con người có cách tiếp cận ngôn ngữ khác với máy tính. Đây là lý do tại sao bạn thường muốn bỏ qua viết hoa khi bạn kiểm tra xem một chuỗi có chứa chuỗi con trong Python hay không.
Bạn có thể tổng quát hóa việc kiểm tra chuỗi con của mình bằng cách chuyển đổi toàn bộ văn bản đầu vào thành chữ thường:
>>> file_content = file_content_title.lower()
>>> file_content
"hi there and welcome.\nthis is a special hidden file with a secret secret.
⮑ \ni don't want to tell you the secret,\nbut i do want to secretly tell you
⮑ that i have one."
>>> "secret" in file_content
True