Tìm kiếm mẫu trong chuỗi bằng Python – kiểm tra mẫu trong chuỗi python

Đối sánh mẫu trong Python bằng cách sử dụng phương pháp ngây thơ với giải thích đầy đủ và cũng sử dụng phương thức chuỗi tích hợp sẵn trong Python.

Bạn đang xem : kiểm tra mẫu trong chuỗi python

Tìm kiếm mẫu trong chuỗi bằng Python – Phương pháp Naive

Bài đăng sau đây đề cập đến việc tìm kiếm mẫu trong một chuỗi, tức là tìm kiếm các lần xuất hiện của một chuỗi con trong một chuỗi nhất định và hiển thị chỉ mục bắt đầu. Nó sử dụng phương pháp ngây thơ để triển khai.

Điều kiện tiên quyết: Ý tưởng cơ bản về Chuỗi Python và các vòng lặp

Phương pháp Naive – Tìm kiếm theo mẫu

Phương thức ngây thơ chỉ đơn giản là một phương pháp brute force để tìm kiếm chuỗi con đã cho trong chuỗi chính.

Phương pháp này là bắt đầu tìm kiếm từng chữ cái trong chuỗi chính. Nếu ký tự đầu tiên của chuỗi con được cung cấp khớp với nhau, chúng tôi bắt đầu một vòng lặp bên trong để kiểm tra xem tất cả các phần tử từ chuỗi con có khớp với các phần tử liên tiếp trong chuỗi chính hay không. Đó là, chúng ta chỉ đơn giản là xem toàn bộ chuỗi con có hiện diện hay không. Nếu nó hiện diện, chúng tôi trả về chỉ mục bắt đầu trong chuỗi chính. Thuật toán hoạt động tốt đối với các chuỗi nhỏ nhưng tiêu tốn quá nhiều thời gian cho các chuỗi dài hơn. Tuy nhiên, nó giúp chúng ta hiểu ý tưởng cơ bản về tìm kiếm theo mẫu và là một nơi tốt để bắt đầu.

Triển khai phương pháp ngây thơ trong Python

Hãy xem xét chương trình sau,

 khớp lệch (chuỗi, con):
    l = len (chuỗi)
    ls = len (con)
    start = sub [0]

    cho k trong phạm vi (l-ls + 1):
        nếu start == string [k]:
            i, j = 1, k + 1
            trong khi tôi & lt; ls:
                if sub [i] == string [j]:
                    i + = 1
                    j + = 1
                khác:
                    phá vỡ
            khác:
                print "Tìm thấy tại chỉ mục", k

match ("AABAACAADAABAABA", "AABA") 

Trong chương trình trên, ‘string’ là chuỗi chính và ‘sub’ là mẫu được so khớp.

Xem Thêm  How to Make a Back to Top Button and Page Progress Bar with HTML, CSS, and JavaScript - scroll to top button

Chúng ta bắt đầu với vòng lặp for đi từ chỉ mục 0 đến chỉ mục l-ls như thể chữ cái đầu tiên của chuỗi con không được tìm thấy trong chỉ mục này, sẽ không có đủ không gian để chứa chuỗi con hoàn chỉnh và chúng ta có thể loại trừ khả năng. Đây là một cải tiến rất nhỏ của phương pháp ngây thơ.

Nếu các chữ cái đầu tiên khớp, thì chúng tôi sử dụng vòng lặp while để kiểm tra xem chữ cái khác của mẫu cũng khớp bằng cách sử dụng i làm chỉ số cho mẫu và j cho chuỗi. Lưu ý việc sử dụng else cho vòng lặp while. Khối này được thực thi khi vòng lặp kết thúc tự nhiên, tức là do điều kiện của nó trở thành sai chứ không phải do câu lệnh break. Nếu vòng lặp thoát ra vì điều kiện trở thành sai, điều đó có nghĩa là tất cả các chữ cái đã khớp. Nếu nó kết thúc do câu lệnh break, điều đó có nghĩa là có sự không khớp ở đâu đó.

Do đó, ở phần khác, chúng tôi in chỉ mục k, nơi phần tử đầu tiên được tìm thấy khớp. Dưới đây là kết quả đầu ra cho chương trình trên.

Đầu ra 1 – Hình ảnh

Sử dụng Python’s Built- Trong Hàm

Python cung cấp một số lượng lớn các hàm chuỗi tích hợp sẵn. Rất dễ dàng để thực hiện vấn đề nói trên chỉ bằng cách sử dụng chúng. Đoạn mã sau minh họa một phương thức như vậy,

 def match (string, sub):
    nếu phụ trong chuỗi:
        ind = string.find (con)
        trong khi ind! = - 1:
            print "Tìm thấy tại chỉ mục", ind
            ind = string.find (sub, ind + 1)

match ("AABAACAADAABAABA", "AABA") 

Cùng một hàm, match () đã được định nghĩa lại bằng một hàm tích hợp – find ()

Khi find () được sử dụng dưới dạng & lt; string_var & gt; .find (& lt; substr & gt;, [start [, end]]) nó trả về chỉ mục bắt đầu đầu tiên nơi tìm thấy chuỗi con. Nó trả về -1 nếu nó không được tìm thấy. start và end được sử dụng để chỉ định chỉ số bắt đầu và kết thúc của dải ô trong chuỗi chính mà chúng tôi muốn tìm chuỗi con trong đó.

Xem Thêm  Java SE 7 and JDK 7 Compatibility - throws trong java

Do đó, chúng tôi kiểm tra xem chuỗi con có xuất hiện ít nhất một lần hay không, bằng cách sử dụng câu lệnh if và tiếp tục tìm lần xuất hiện tiếp theo bằng cách chỉ định bắt đầu là một vị trí sau chỉ mục được tìm thấy trước đó. Điều này được tiếp tục cho đến khi hàm trả về -1.

Đầu ra sẽ giống nhau!

Hạn chế của phương pháp Naive

Phương thức ngây thơ, như đã đề cập trước đây , là một phương pháp vũ phu và rất tốn thời gian đối với các chuỗi dài. Nó đặc biệt chậm đối với các trường hợp chuỗi con dài và trong các trường hợp như thế này – & gt; chuỗi chính – “AAAAAAAAAB” và mẫu – “AAAAA”. Đối với 5 phần tử cuối cùng, vòng lặp bên trong thực hiện 4 lần lặp và kết thúc từ chối chỉ mục. Hãy tưởng tượng thời gian bị lãng phí nếu chuỗi con dài 100 ký tự và sự không khớp chỉ nằm ở vị trí cuối cùng!

Tồn tại các thuật toán hiệu quả hơn. Tham khảoVí dụ: Tìm kiếm mẫu trong chuỗi với Thuật toán Rabin-Karp bằng Python .

Vui lòng để lại bất kỳ loại phản hồi, đề xuất, nghi ngờ nào bên dưới.


Xem thêm những thông tin liên quan đến chủ đề kiểm tra mẫu trong chuỗi python

How to check if a string contains unique characters in Python

  • Tác giả: Asim Code
  • Ngày đăng: 2020-07-05
  • Đánh giá: 4 ⭐ ( 6733 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: In this video we will learn how to check if a string contains unique characters in Python. Please subscribe to support Asim Code!
    https://www.youtube.com/channel/UC2wyJKxwEEk_CK_HkqgZ_6g?sub_confirmation=1
Xem Thêm  LEFT JOIN trong SQL là gì? - tham gia bên ngoài bên trái sql là gì

100 bài tập Python có lời giải (Code mẫu) – Khóa học.Toán247.com

  • Tác giả: khoahoc.toan247.com
  • Đánh giá: 5 ⭐ ( 3196 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Kiểm tra chuỗi có phải là số hay không trong python

  • Tác giả: laptrinhcanban.com
  • Đánh giá: 3 ⭐ ( 4853 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn kiểm tra chuỗi có phải là số hay không trong python. Bạn sẽ học được cách kiểm tra chuỗi có phải là số hay không trong python bằng các phương thức có sẵn như isdecimal, isdigit, is

Cách kiểm tra xem một chuỗi có chứa một phần tử từ danh sách trong Python không

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 7358 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Sử dụng một trình tạo cùng với any, mà ngắn mạch trên True đầu tiên: if…

Chuỗi (String) trong Python

  • Tác giả: viettuts.vn
  • Đánh giá: 3 ⭐ ( 8793 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chuỗi (String) trong Python là một trong các kiểu phổ biến nhất trong Python. String trong Python là immutable. Chúng ta có thể tạo các chuỗi bằng cách

Chuỗi (String) trong Python

  • Tác giả: www.elib.vn
  • Đánh giá: 4 ⭐ ( 7566 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Các hàm xử lý chuỗi trong Python

  • Tác giả: toidicode.com
  • Đánh giá: 5 ⭐ ( 9733 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Ở phần đầu của series mình đã giới thiệu với mọi người về chuỗi trong Python rồi, nhưng Python là một ngôn ngữ khá là linh động và mềm dẻo nên nó cũng đã cung cấp cho chúng ta rất nhiều hàm có sẵn dùng để xử lý chuỗi. Bài viết này mình sẽ liệt kê một số hàm hay dùng và ví dụ kèm theo cho mọi người cùng tham khảo.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình