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?”
Có cách nào để xâu chuỗi con trong Python, để lấy một chuỗi mới từ ký tự thứ 3 đến cuối chuỗi không?
Có lẽ như myString[2:end]
?
Có, điều này thực sự hiệu quả nếu bạn gán, hoặc , tên,____42_______, cho hằng số đơn lẻ, None
>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'
Ký hiệu lát cắt có 3 đối số quan trọng
Giá trị mặc định của chúng khi không được cung cấp là None
- nhưng chúng ta có thể chuyển chúng một cách rõ ràng
>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'
Nếu bỏ phần thứ hai có nghĩa là 'cho đến khi kết thúc', nếu bạn bỏ phần đầu tiên, liệu nó có bắt đầu lại từ đầu không?
Vâng, ví dụ
>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'
Lưu ý rằng chúng tôi bao gồm bắt đầu trong lát cắt, nhưng chúng tôi chỉ đi tới và không bao gồm dừng
Khi bước là None
, theo mặc định, lát cắt sử dụng 1
cho bước. Nếu bạn bước với số nguyên âm, Python đủ thông minh để đi từ cuối đến đầu
Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng phương thức chuỗi find[]
của Python một cách hiệu quả để tìm một chuỗi con trong một chuỗi
Giới thiệu về phương thức tìm chuỗi Python []
find[]
là một phương thức chuỗi tìm một chuỗi con trong một chuỗi và trả về chỉ mục của chuỗi con
Sau đây minh họa cú pháp của phương thức find[]
Code language: CSS [css]
str.find[sub[, start[, end]]]
Phương thức find[]
chấp nhận ba tham số
2 là xâu con cần tìm trongsub in str
3sub in str
- Các tham số
4 vàsub in str
5 được diễn giải như trong lát cắtsub in str
6, chỉ định nơi tìm kiếm chuỗi consub in str
2sub in str
Cả hai tham số
4 và
sub in str
5 đều là tùy chọn. Tham số
sub in str
4 mặc định là 0. Và tham số
sub in str
5 mặc định là
sub in str
2 trong đóCode language: PHP [php]
s = 'Johny Johny Yes Papa' result = s.find['Python'] print[result]
3 là độ dài củaCode language: PHP [php]
s = 'Johny Johny Yes Papa' result = s.find['Python'] print[result]
3
sub in str
Nếu
3 không chứa chuỗi con
sub in str
2 trong lát cắt
sub in str
6, phương thức
sub in str
find[]
trả về -1Trong thực tế, bạn chỉ nên sử dụng phương thức find[]
nếu bạn muốn biết vị trí của chuỗi con. Nếu bạn chỉ muốn kiểm tra xem một chuỗi có chứa chuỗi con hay không, bạn nên sử dụng toán tử
0 để thay thế
0
sub in str
Các ví dụ về phương thức find[] chuỗi Python
Hãy lấy một số ví dụ về việc sử dụng phương pháp find[]
1] Sử dụng phương thức find[] chuỗi Python để tìm chuỗi con trong chuỗi
Ví dụ sau đây cho thấy cách sử dụng phương thức find[]
để tìm chuỗi con
3 trong chuỗi
0
4
0
Code language: PHP [php]
s = 'Johny Johny Yes Papa' result = s.find['Python'] print[result]
đầu ra
0
Bởi vì chuỗi
4 có hai chuỗi con
0
3, phương thức
0
find[]
trả về chỉ số của lần xuất hiện đầu tiên của chuỗi con 3
0
2] Sử dụng phương thức find[] chuỗi Python để tìm một chuỗi con trong một chuỗi trong một lát cắt
Ví dụ sau sử dụng phương thức find[]
để xác định vị trí chuỗi con
3 trong chuỗi
0
4 trong lát cắt
0
2Code language: PHP [php]
s = 'Johny Johny Yes Papa' result = s.find['Johny', 1] print[result]
Code language: PHP [php]
s = 'Johny Johny Yes Papa' result = s.find['Johny', 1] print[result]
đầu ra
6
Trong ví dụ này, phương thức find[]
trả về chỉ số của lần xuất hiện thứ hai của chuỗi con
3 trong chuỗi
0
4
0
3] Chuỗi con không tồn tại trong ví dụ về chuỗi
Ví dụ sau trả về -1 vì chuỗi con
6 không tồn tại trong chuỗiCode language: PHP [php]
s = 'Johny Johny Yes Papa' result = s.find['Johny', 1] print[result]
4
0