Trong bài viết này, bạn sẽ tìm hiểu cách kiểm tra xem một chuỗi có chứa chuỗi con hay không trong Python.
Việc kiểm tra xem một chuỗi có chứa một chuỗi con hay không sẽ hữu ích khi bạn đã nhận được đầu vào của người dùng và muốn chương trình của mình hoạt động theo một cách nhất định – hoặc thậm chí khi bạn muốn thay thế một từ này bằng một từ khác.
Python cung cấp nhiều cách để xác nhận xem một chuỗi con có tồn tại trong một chuỗi hay không và trong hướng dẫn nhanh này, bạn sẽ thấy một vài trong số đó đang hoạt động.
Đây là những gì chúng tôi sẽ đề cập:
- Cách kiểm tra xem một chuỗi có chứa chuỗi con hay không bằng cách sử dụng
in
nhà điều hành- Cách thực hiện tìm kiếm không phân biệt chữ hoa chữ thường khi sử dụng
in
nhà điều hành
- Cách thực hiện tìm kiếm không phân biệt chữ hoa chữ thường khi sử dụng
- Cách kiểm tra xem một chuỗi có chứa chuỗi con hay không bằng cách sử dụng
.index()
phương pháp - Cách kiểm tra xem một chuỗi có chứa chuỗi con hay không bằng cách sử dụng
.find()
phương pháp
Cách kiểm tra xem một chuỗi có chứa chuỗi con hay không bằng cách sử dụng in
Toán tử trong Python
Sử dụng in
toán tử là một trong những cách rõ ràng nhất, dễ đọc nhất và hầu hết Pythonic để xác nhận xem một chuỗi con có tồn tại trong một chuỗi hay không.
Do đó, các in
toán tử là cách ưa thích để kiểm tra xem một chuỗi có chứa một chuỗi con hay không.
Cú pháp chung để sử dụng in
toán tử như sau:
substring in string
Các in
toán tử trả về một giá trị Boolean. Một giá trị Boolean là một trong hai True
hoặc False
.
Các in
toán tử trả về True
nếu chuỗi con có mặt trong chuỗi và False
nếu chuỗi con không có mặt.
>>> learn_coding = "You can learn to code for free!"
>>> "free" in learn_coding
True
Trong ví dụ trên, tôi đã nhập bảng điều khiển tương tác của Python, còn được gọi là trình thông dịch Python hoặc Python shell.
Bạn có thể nhập nó sau khi cài đặt Python cục bộ, mở thiết bị đầu cuối của bạn và nhập Python
hoặc Python3
tùy thuộc vào hệ thống của bạn.
tôi lưu trữ cụm từ You can learn to code for free!
trong một biến gọi là learn_coding
.
Sau đó, tôi kiểm tra xem chuỗi con free
có mặt trong cụm từ You can learn to code for free!
sử dụng in
nhà điều hành.
Vì chuỗi con có mặt, in
lợi nhuận True
.
Điều quan trọng cần lưu ý là in
toán tử chỉ kiểm tra xem chuỗi con có mặt và tồn tại trong chuỗi hay không. Nó không kiểm tra vị trí của chuỗi con, cũng như không cung cấp bất kỳ thông tin nào về số lần chuỗi con xuất hiện trong chuỗi.
Ngoài ra, bạn cũng có thể chọn kiểm tra xem một chuỗi con có không phải hiện trong một chuỗi bằng cách sử dụng not in
nhà điều hành:
>>> learn_coding = "You can learn to code for free!"
>>> "free" not in learn_coding
False
Lần này, tôi sử dụng not in
toán tử để kiểm tra xem chuỗi con free
Là không phải có mặt trong chuỗi You can learn to code for free!
. Từ free
có mặt, các not in
toán tử trả về False
.
Bây giờ, chúng ta hãy quay trở lại in
nhà điều hành.
Bạn có thể dùng in
toán tử để kiểm soát hành vi của chương trình của bạn bằng cách thiết lập các điều kiện.
Hãy lấy ví dụ sau:
user_input = input("Do you need to pay to learn to code?: ")
if "yes" in user_input:
print("Wrong! You can learn to code for free!!")
Trong ví dụ trên, tôi đang yêu cầu người dùng nhập dữ liệu và lưu trữ câu trả lời của họ trong một biến có tên user_input
.
Sau đó, tôi sử dụng một câu lệnh điều kiện kết hợp với in
toán tử để đưa ra quyết định (nếu bạn cần xem lại các câu lệnh có điều kiện trong Python, hãy đọc bài viết này).
Nếu câu trả lời của họ chứa chuỗi con yes
sau đó in
trả về cụm từ Wrong! You can learn to code for free
bởi vì mã trong if
tuyên bố thực hiện:
Do you need to pay to learn to code?: yes, I think you do
Wrong! You can learn to code for free!!
Trong ví dụ trên, chuỗi người dùng đã nhập, yes, I think you do
chứa chuỗi con yes
và mã trong if
khối chạy.
Điều gì xảy ra khi người dùng nhập Yes, I think you do
với số vốn Y
thay vì một chữ thường?
Do you need to pay to learn to code?: Yes, I think you do
Như bạn thấy, không có gì xảy ra! Chương trình không có đầu ra vì các chuỗi Python phân biệt chữ hoa chữ thường.
Bạn có thể viết một else
tuyên bố để giải quyết điều này. Tuy nhiên, thay vào đó, bạn có thể tính đến phân biệt chữ hoa chữ thường khi kiểm tra xem liệu một chuỗi con có xuất hiện trong một chuỗi hay không.
Hãy xem làm thế nào để làm điều đó trong phần sau.
Cách thực hiện tìm kiếm không phân biệt chữ hoa chữ thường khi sử dụng in
Toán tử trong Python
Trong phần trên, bạn đã thấy rằng khi tìm kiếm nếu một chuỗi con có trong một chuỗi, tìm kiếm sẽ phân biệt chữ hoa chữ thường.
Vì vậy, làm thế nào bạn có thể làm cho trường hợp tìm kiếm không nhạy cảm?
Bạn có thể chuyển đổi toàn bộ đầu vào của người dùng thành chữ thường bằng cách sử dụng .lower()
phương pháp:
user_input = input("Do you need to pay to learn to code?: ").lower()
if "yes" in user_input:
print("Wrong! You can learn to code for free!!")
Bây giờ, khi người dùng vào Yes
với số vốn Y
mã trong if
câu lệnh chạy, ngay cả khi bạn đang tìm kiếm chuỗi con yes
với một chữ thường y
. Điều này là do bạn đã chuyển đổi văn bản nhập của người dùng thành tất cả các chữ cái viết thường.
Cách kiểm tra xem một chuỗi có chứa chuỗi con hay không bằng cách sử dụng .index()
Phương thức trong Python
Bạn có thể dùng .index()
Phương thức Python để tìm số chỉ mục bắt đầu của ký tự đầu tiên của lần xuất hiện đầu tiên của chuỗi con bên trong chuỗi:
learn_coding = "You can learn to code for free! Yes, for free!"
substring = "free"
print(learn_coding.index(substring))
# output
# 26
Trong ví dụ trên, tôi đã lưu trữ chuỗi You can learn to code for free! Yes, for free!
trong một biến có tên learn_coding
.
Tôi cũng đã lưu trữ chuỗi con free
trong biến substring
.
Sau đó, tôi gọi cho .index()
phương thức trên chuỗi và chuyển chuỗi con làm đối số để tìm vị trí đầu tiên free
xuất hiện chuỗi con. (Chuỗi được lưu trong learn_coding
chứa hai trường hợp của chuỗi con free
).
Cuối cùng, tôi đã in kết quả.
Nếu chuỗi con là không phải hiện diện trong chuỗi, sau đó một ValueError: substring not found
lỗi được nâng lên:
learn_coding = "You can learn to code for free! Yes, for free!"
substring = "paid"
print(learn_coding.index(substring))
# output
# Traceback (most recent call last):
# File "main.py", line 4, in <module>
# print(learn_coding.index(substring))
# ValueError: substring not found
Các .index()
phương thức hữu ích khi bạn muốn biết vị trí của chuỗi con mà bạn đang tìm kiếm và vị trí chuỗi con xuất hiện và bắt đầu trong chuỗi.
Các in
toán tử cho bạn biết liệu chuỗi con có tồn tại trong chuỗi hay không, trong khi .index()
phương pháp cũng cho bạn biết ở đâu nó có tồn tại.
Mà nói, .index()
không lý tưởng khi Python không thể tìm thấy chuỗi con trong chuỗi vì nó tăng ValueError
lỗi.
Nếu bạn muốn tránh lỗi đó xuất hiện khi tìm kiếm một chuỗi và bạn không muốn sử dụng in
toán tử, bạn có thể sử dụng Python find()
phương pháp thay thế.
Cách kiểm tra xem một chuỗi có chứa chuỗi con hay không bằng cách sử dụng .find()
Phương thức trong Python
Các .find()
phương thức hoạt động tương tự như .index()
phương thức – nó kiểm tra xem một chuỗi có chứa chuỗi con hay không và nếu có chuỗi con, nó sẽ trả về chỉ mục bắt đầu của nó.
learn_coding = "You can learn to code for free! Yes, for free!"
substring = "free"
print(learn_coding.find(substring))
# output
# 26
Sự khác biệt giữa .find()
phương pháp và .index()
phương pháp là với .find()
bạn không phải lo lắng khi nó xử lý các ngoại lệ, so với .index()
.
Như bạn đã thấy ở phần trên, khi chuỗi không chứa chuỗi con, index()
phát sinh lỗi.
Mặt khác, khi bạn đang sử dụng .find()
phương thức và chuỗi không chứa chuỗi con mà bạn đang tìm kiếm, .find()
lợi nhuận -1
mà không đưa ra một ngoại lệ:
learn_coding = "You can learn to code for free! Yes, for free!"
substring = "paid"
print(learn_coding.find(substring))
# output
# -1
Phần kết luận
Hy vọng rằng bài viết này đã giúp bạn hiểu cách kiểm tra xem một chuỗi có chứa chuỗi con hay không trong Python.
Để tìm hiểu thêm về ngôn ngữ lập trình Python, hãy xem chứng chỉ Python của freeCodeCamp.
Bạn sẽ bắt đầu từ những điều cơ bản và học theo cách tương tác và thân thiện với người mới bắt đầu. Cuối cùng, bạn cũng sẽ xây dựng năm dự án để đưa vào thực tế và giúp củng cố những gì bạn đã học được.
Cảm ơn bạn đã đọc và chúc bạn mã hóa vui vẻ!