Một trong những hoạt động phổ biến nhất mà các lập trình viên sử dụng trên chuỗi là kiểm tra xem một chuỗi có chứa một số chuỗi khác không
Ví dụ: nếu bạn đến với Python từ Java, bạn có thể đã sử dụng phương thức chứa để kiểm tra xem một số chuỗi con có tồn tại trong một chuỗi khác không
Trong Python, có hai cách để đạt được điều này
Đầu tiên. Sử dụng toán tử in
Cách dễ nhất là thông qua toán tử in của Python.
Hãy xem ví dụ này
>>> str = "Messi is the best soccer player"
>>> "soccer" in str
True
>>> "football" in str
False
Như bạn có thể thấy, toán tử in trả về True khi chuỗi con tồn tại trong chuỗi
Nếu không, nó trả về false
Phương pháp này rất đơn giản, rõ ràng, dễ đọc và thành ngữ
Thứ hai. Sử dụng phương pháp tìm
Một phương thức khác mà bạn có thể sử dụng là phương thức find của chuỗi
Không giống như toán tử in được ước tính thành giá trị boolean, phương thức find trả về một số nguyên.
Số nguyên này về cơ bản là chỉ số của phần đầu của chuỗi con nếu chuỗi con tồn tại, nếu không thì -1 được trả về
Hãy xem hoạt động của phương thức find .
>>> str = "Messi is the best soccer player"
>>> str.find["soccer"]
18
>>> str.find["Ronaldo"]
-1
>>> str.find["Messi"]
0
Một điều thú vị về phương pháp này là bạn có thể tùy chọn chỉ định chỉ mục bắt đầu và chỉ mục kết thúc để giới hạn tìm kiếm của mình trong phạm vi
Ví dụ
>>> str = "Messi is the best soccer player"
>>> str.find["soccer", 5, 25]
18
>>> str.find["Messi", 5, 25]
-1
Lưu ý cách -1 được trả về cho “Messi” vì bạn đang giới hạn tìm kiếm của mình trong chuỗi chỉ giữa các chỉ số 5 và 25.
Bảng cheat Python 3 cho người mới bắt đầu
Tải xuống một bảng cheat toàn diện dành cho người mới bắt đầu với các ví dụ mã mở rộng bao gồm tất cả các chủ đề mà bạn cần tìm hiểu
Một số nội dung nâng cao
Giả sử trong một giây rằng Python không có các hàm hoặc phương thức tích hợp sẵn để kiểm tra xem một chuỗi có chứa một chuỗi khác hay không
Làm thế nào bạn sẽ viết một chức năng để làm điều đó?
Chà, một cách dễ dàng là dùng vũ lực bằng cách kiểm tra xem chuỗi con có tồn tại bắt đầu từ mọi vị trí có thể có trong chuỗi gốc hay không
Đối với các chuỗi lớn hơn, quá trình này có thể rất chậm
Có các thuật toán tốt hơn để tìm kiếm chuỗi
Tôi đánh giá cao bài viết này từ TopCoder nếu bạn muốn tìm hiểu thêm và tìm hiểu sâu hơn về các thuật toán tìm kiếm chuỗi
Để biết thêm thông tin về các thuật toán tìm kiếm chuỗi khác không được đề cập trong bài viết trước, trang wikipedia này rất hay
Nếu bạn xem qua các bài viết trước và nghiên cứu chúng, câu hỏi tiếp theo của bạn sẽ là “Python thực sự sử dụng thuật toán nào?”
Hướng dẫn này sẽ giới thiệu phương pháp để tìm xem một từ được chỉ định có nằm trong một biến chuỗi hay không trong Python
Kiểm tra chuỗi nếu nó chứa một từ thông qua một câu lệnh if/in
trong Python
Nếu chúng ta muốn kiểm tra xem một chuỗi đã cho có chứa một từ cụ thể trong đó hay không, chúng ta có thể sử dụng câu lệnh if/in
trong Python. Câu lệnh if/in
trả về True
nếu từ có trong chuỗi và False
nếu từ không có trong chuỗi
Đoạn chương trình sau đây cho chúng ta thấy cách sử dụng câu lệnh if/in
để xác định xem một chuỗi có chứa một từ hay không
string = "This contains a word"
if "word" in string:
print["Found"]
else:
print["Not Found"]
đầu ra
Chúng ta đã kiểm tra xem biến chuỗi string
có chứa từ
string = "This contains a word"
if "is" in string:
print["Found"]
else:
print["Not Found"]
0 bên trong hay không bằng câu lệnh if/in
trong chương trình trên. Cách tiếp cận này so sánh cả hai chuỗi ký tự khôn ngoan; string = "This contains a word"
if "is" in string:
print["Found"]
else:
print["Not Found"]
đầu ra
Đầu ra cho thấy rằng từ
string = "This contains a word"
if "is" in string:
print["Found"]
else:
print["Not Found"]
2 có mặt bên trong biến chuỗi string
. Nhưng, trên thực tế, string = "This contains a word"
if "is" in string:
print["Found"]
else:
print["Not Found"]
2 này chỉ là một phần của từ đầu tiên string = "This contains a word"
if "is" in string:
print["Found"]
else:
print["Not Found"]
5 trong biến string
Vấn đề này có một giải pháp đơn giản. Chúng ta có thể bao quanh từ và biến string
với khoảng trắng để so sánh toàn bộ từ. Chương trình dưới đây cho chúng ta thấy làm thế nào chúng ta có thể làm điều đó
string = "This contains a word"
if " is " in [" " + string + " "]:
print["Found"]
else:
print["Not Found"]
đầu ra
Trong đoạn mã trên, chúng tôi đã sử dụng cùng một câu lệnh if/in
, nhưng chúng tôi đã thay đổi nó một chút để chỉ so sánh các từ riêng lẻ. Lần này, đầu ra không hiển thị từ nào như
string = "This contains a word"
if "is" in string:
print["Found"]
else:
print["Not Found"]
2 bên trong biến string