Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luận

    Đưa ra một chuỗi và chuỗi phụ, nhiệm vụ là lấy số lượng con chồng chéo từ chuỗi đã cho.

    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    0
    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    1
    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    2
    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    3

    Output:

    2

    Lưu ý rằng trong Python, hàm

    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    6 trả về số lượng chất nền trong một chuỗi nhất định, nhưng nó không cho kết quả chính xác khi hai lần xuất hiện của chuỗi con chồng chéo. Xem xét ví dụ này -

    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    7
    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    8
    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    9

    Đầu ra chúng tôi có ở đây là 2, nhưng đầu ra dự kiến ​​là 3 vì chúng tôi cũng muốn tính sự xuất hiện của chuỗi phụ chồng chéo.

    Để giải quyết vấn đề này, chúng ta có thể sử dụng chức năng

    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    4 trong Python. Nó trả về vị trí bắt đầu của lần xuất hiện đầu tiên của chuỗi con trong chuỗi đã cho, sau đó chúng tôi tăng vị trí này lên 1 và tiếp tục tìm kiếm từ vị trí đó cho đến khi kết thúc chuỗi.

    Dưới đây là việc thực hiện -

    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    5
    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    6

    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    7
    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    8
    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    8
    >>> def occurrences(text, sub):
            return len(re.findall('(?={0})'.format(re.escape(sub)), text))
    
    >>> occurrences(text, '11')
    5
    
    0

    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    7
    >>> def occurrences(text, sub):
            return len(re.findall('(?={0})'.format(re.escape(sub)), text))
    
    >>> occurrences(text, '11')
    5
    
    2
    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    8
    >>> def occurrences(text, sub):
            return len(re.findall('(?={0})'.format(re.escape(sub)), text))
    
    >>> occurrences(text, '11')
    5
    
    0

    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    7
    >>> def occurrences(text, sub):
            return len(re.findall('(?={0})'.format(re.escape(sub)), text))
    
    >>> occurrences(text, '11')
    5
    
    6
    >>> def occurrences(text, sub):
            return len(re.findall('(?={0})'.format(re.escape(sub)), text))
    
    >>> occurrences(text, '11')
    5
    
    7
    >>> def occurrences(text, sub):
            return len(re.findall('(?={0})'.format(re.escape(sub)), text))
    
    >>> occurrences(text, '11')
    5
    
    8
    >>> def occurrences(text, sub):
            return len(re.findall('(?={0})'.format(re.escape(sub)), text))
    
    >>> occurrences(text, '11')
    5
    
    9

    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    0
    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    1
    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    8
    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    3

    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    0
    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    5
    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    6
    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    8
    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    8
    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    9
    In [3]: "ababa".count("aba")
    Out[3]: 1
    
    0

    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    0
    In [10]: re.findall("a(?=ba)", "ababa")
    Out[10]: ['a', 'a']
    
    3
    In [3]: "ababa".count("aba")
    Out[3]: 1
    
    0

    In [3]: "ababa".count("aba")
    Out[3]: 1
    
    1
    In [10]: re.findall("a(?=ba)", "ababa")
    Out[10]: ['a', 'a']
    
    6

    In [3]: "ababa".count("aba")
    Out[3]: 1
    
    1
    >>> def occurrences(text, sub):
            return len(re.findall('(?={0})'.format(re.escape(sub)), text))
    
    >>> occurrences(text, '11')
    5
    
    2
    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    8
    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    1
    In [3]: "ababa".count("aba")
    Out[3]: 1
    
    5
    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    
    9

    Đưa ra một chuỗi và chuỗi phụ, nhiệm vụ là lấy số lượng con chồng chéo từ chuỗi đã cho.

    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    0
    In [11]: data = "ababa"
    In [17]: sum(1 for i in range(len(data)) if data.startswith("aba", i))
    Out[17]: 2
    
    4
    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    2
    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    
    3


    Cách tốt nhất để đếm số lần xuất hiện của một chuỗi nhất định, bao gồm cả sự chồng chéo trong Python? Đây là một cách:

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    

    Phương pháp này trả về 5.

    Có cách nào tốt hơn trong Python không?

    charlesreid1

    4.1114 Huy hiệu vàng29 Huy hiệu bạc 50 Huy hiệu Đồng4 gold badges29 silver badges50 bronze badges

    Đã hỏi ngày 3 tháng 6 năm 2010 lúc 23:29Jun 3, 2010 at 23:29

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    calcryptocalccryptocalccrypto

    8.29121 Huy hiệu vàng66 Huy hiệu bạc99 Huy hiệu Đồng21 gold badges66 silver badges99 bronze badges

    0

    Chà, điều này có thể nhanh hơn vì nó so sánh trong C:

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    

    Đã trả lời ngày 3 tháng 6 năm 2010 lúc 23:35Jun 3, 2010 at 23:35

    Jochen Ritzeljochen RitzelJochen Ritzel

    102K30 Huy hiệu vàng196 Huy hiệu bạc192 Huy hiệu Đồng30 gold badges196 silver badges192 bronze badges

    0

    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    

    Nếu bạn không muốn tải toàn bộ danh sách các trận đấu vào bộ nhớ, điều này sẽ không bao giờ là vấn đề! Bạn có thể làm điều này nếu bạn thực sự muốn:

    >>> sum(1 for _ in re.finditer('(?=11)', text))
    5
    

    Là một hàm (

    In [11]: data = "ababa"
    In [17]: sum(1 for i in range(len(data)) if data.startswith("aba", i))
    Out[17]: 2
    
    7 đảm bảo phần phụ không can thiệp vào regex):

    >>> def occurrences(text, sub):
            return len(re.findall('(?={0})'.format(re.escape(sub)), text))
    
    >>> occurrences(text, '11')
    5
    

    Đã trả lời ngày 29 tháng 7 năm 2012 lúc 2:04Jul 29, 2012 at 2:04

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    0

    Bạn cũng có thể thử sử dụng mô -đun Python Regex mới, hỗ trợ các trận đấu chồng chéo.

    import regex as re
    
    def count_overlapping(text, search_for):
        return len(re.findall(search_for, text, overlapped=True))
    
    count_overlapping('1011101111','11')  # 5
    

    Đã trả lời ngày 25 tháng 8 năm 2016 lúc 22:50Aug 25, 2016 at 22:50

    David CDavid cDavid C

    6.9344 Huy hiệu vàng48 Huy hiệu bạc65 Huy hiệu Đồng4 gold badges48 silver badges65 bronze badges

    Python's

    In [11]: data = "ababa"
    In [17]: sum(1 for i in range(len(data)) if data.startswith("aba", i))
    Out[17]: 2
    
    8 tính các nền tảng không chồng chéo:

    In [3]: "ababa".count("aba")
    Out[3]: 1
    

    Dưới đây là một vài cách để đếm các chuỗi chồng chéo, tôi chắc chắn còn nhiều cách nữa :)

    Xem xét biểu thức thường xuyên

    Làm thế nào để tìm các trận đấu chồng chéo với RegEXP?

    In [10]: re.findall("a(?=ba)", "ababa")
    Out[10]: ['a', 'a']
    

    Tạo tất cả các chuỗi con

    In [11]: data = "ababa"
    In [17]: sum(1 for i in range(len(data)) if data.startswith("aba", i))
    Out[17]: 2
    

    Đã trả lời ngày 14 tháng 1 năm 2016 lúc 8:50Jan 14, 2016 at 8:50

    Dima Tisnekdima TisnekDima Tisnek

    10,8K4 Huy hiệu vàng63 Huy hiệu bạc116 Huy hiệu đồng4 gold badges63 silver badges116 bronze badges

    1

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    0

    Đây có thể là cách dễ nhất.

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    Graham

    2.5553 Huy hiệu vàng15 Huy hiệu bạc 30 Huy hiệu Đồng3 gold badges15 silver badges30 bronze badges

    Đã trả lời ngày 12 tháng 5 năm 2018 lúc 4:01May 12, 2018 at 4:01

    Arun Tomarun TomArun Tom

    7316 Huy hiệu bạc8 Huy hiệu Đồng6 silver badges8 bronze badges

    Một cách khá pythonic sẽ là sử dụng danh sách hiểu ở đây, mặc dù nó có thể không hiệu quả nhất.

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    1

    Danh sách sẽ là

    In [11]: data = "ababa"
    In [17]: sum(1 for i in range(len(data)) if data.startswith("aba", i))
    Out[17]: 2
    
    9 vì nó kiểm tra tất cả các chỉ mục thông qua chuỗi và vì
    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    00,
    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    01 cung cấp cho chúng tôi tổng số trận đấu.

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    0x12

    18.4K22 Huy hiệu vàng65 Huy hiệu bạc124 Huy hiệu đồng22 gold badges65 silver badges124 bronze badges

    Đã trả lời ngày 26 tháng 2 năm 2019 lúc 23:08Feb 26, 2019 at 23:08

    ParkerdparkerdParkerD

    1.07211 huy hiệu bạc16 Huy hiệu đồng11 silver badges16 bronze badges

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    2

    Đã trả lời ngày 7 tháng 3 năm 2015 lúc 13:49Mar 7, 2015 at 13:49

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    Cách tìm một mẫu trong một chuỗi khác với sự chồng chéo

    Hàm này (một giải pháp khác!) Nhận một mẫu và một văn bản. Trả về một danh sách với tất cả các chuỗi con nằm trong vị trí của họ.

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    3

    [('ana', 1), ('ana', 3)] [('Bana', 0), ('nana', 2), ('fana', 7), ('fana', 15)]
    [('Bana', 0), ('nana', 2), ('fana', 7), ('fana', 15)]

    Đã trả lời ngày 2 tháng 8 năm 2016 lúc 1:32Aug 2, 2016 at 1:32

    Câu trả lời của tôi, cho câu hỏi Bob trong khóa học:

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    4

    Đã trả lời ngày 22 tháng 1 năm 2015 lúc 22:30Jan 22, 2015 at 22:30

    Luke Dluke dLuke D

    1.9513 huy hiệu vàng15 Huy hiệu bạc16 Huy hiệu đồng3 gold badges15 silver badges16 bronze badges

    0

    Dưới đây là giải pháp EDX MIT "Tìm Bob"* của tôi (* Tìm số lượng "Bob" xảy ra trong một chuỗi có tên S), mà cơ bản tính các lần xuất hiện chồng chéo của một ứng cử viên đã cho:

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    5

    Đã trả lời ngày 2 tháng 9 năm 2015 lúc 13:22Sep 2, 2015 at 13:22

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    Dasdachsdasdachsdasdachs

    67912 Huy hiệu bạc17 Huy hiệu đồng12 silver badges17 bronze badges

    Nếu chuỗi lớn, bạn muốn sử dụng Rabin-Karp, tóm lại:

    • một cửa sổ cuộn có kích thước chuỗi con, di chuyển qua một chuỗi
    • Một hàm băm với O (1) Chi phí để thêm và loại bỏ (tức là di chuyển bằng 1 char)
    • được thực hiện trong C hoặc dựa vào pypy

    Đã trả lời ngày 10 tháng 4 năm 2017 lúc 12:51Apr 10, 2017 at 12:51

    Dima Tisnekdima TisnekDima Tisnek

    10,8K4 Huy hiệu vàng63 Huy hiệu bạc116 Huy hiệu đồng4 gold badges63 silver badges116 bronze badges

    Đây có thể là cách dễ nhất.

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    6

    GrahamAug 4, 2017 at 6:55

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    7

    2.5553 Huy hiệu vàng15 Huy hiệu bạc 30 Huy hiệu Đồng

    Đã trả lời ngày 12 tháng 5 năm 2018 lúc 4:01Sep 19, 2017 at 23:12

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    0

    Arun Tomarun Tom

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    8

    7316 Huy hiệu bạc8 Huy hiệu ĐồngSep 19, 2021 at 14:00

    Một cách khá pythonic sẽ là sử dụng danh sách hiểu ở đây, mặc dù nó có thể không hiệu quả nhất.Stefan Pochmann

    Danh sách sẽ là

    In [11]: data = "ababa"
    In [17]: sum(1 for i in range(len(data)) if data.startswith("aba", i))
    Out[17]: 2
    
    9 vì nó kiểm tra tất cả các chỉ mục thông qua chuỗi và vì
    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    00,
    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    01 cung cấp cho chúng tôi tổng số trận đấu.8 gold badges42 silver badges104 bronze badges

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    9

    18.4K22 Huy hiệu vàng65 Huy hiệu bạc124 Huy hiệu đồngJun 3, 2010 at 23:39

    Đã trả lời ngày 26 tháng 2 năm 2019 lúc 23:08

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    0

    ParkerdparkerdAug 1, 2015 at 15:16

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    1.07211 huy hiệu bạc16 Huy hiệu đồng

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    1

    Đã trả lời ngày 7 tháng 3 năm 2015 lúc 13:49Oct 3, 2015 at 17:52

    Cách tìm một mẫu trong một chuỗi khác với sự chồng chéoAndre

    Hàm này (một giải pháp khác!) Nhận một mẫu và một văn bản. Trả về một danh sách với tất cả các chuỗi con nằm trong vị trí của họ.4 gold badges28 silver badges39 bronze badges

    [('ana', 1), ('ana', 3)] [('Bana', 0), ('nana', 2), ('fana', 7), ('fana', 15)]

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    2

    Đã trả lời ngày 2 tháng 8 năm 2016 lúc 1:32

    Câu trả lời của tôi, cho câu hỏi Bob trong khóa học:Oct 29, 2016 at 7:45

    Đã trả lời ngày 22 tháng 1 năm 2015 lúc 22:30

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    3

    Luke Dluke dMay 7, 2018 at 3:42

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    1.9513 huy hiệu vàng15 Huy hiệu bạc16 Huy hiệu đồngAChampion

    Dưới đây là giải pháp EDX MIT "Tìm Bob"* của tôi (* Tìm số lượng "Bob" xảy ra trong một chuỗi có tên S), mà cơ bản tính các lần xuất hiện chồng chéo của một ứng cử viên đã cho:3 gold badges55 silver badges70 bronze badges

    Đã trả lời ngày 2 tháng 9 năm 2015 lúc 13:22

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    4

    Dasdachsdasdachs

    67912 Huy hiệu bạc17 Huy hiệu đồng

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    5

    Nếu chuỗi lớn, bạn muốn sử dụng Rabin-Karp, tóm lại:

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    6

    một cửa sổ cuộn có kích thước chuỗi con, di chuyển qua một chuỗi

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    7

    Một hàm băm với O (1) Chi phí để thêm và loại bỏ (tức là di chuyển bằng 1 char)

    được thực hiện trong C hoặc dựa vào pypy

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    8

    Đã trả lời ngày 10 tháng 4 năm 2017 lúc 12:51Sep 1, 2018 at 22:57

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    Có thể được giải quyết bằng cách sử dụng regex.pylang

    Đã trả lời ngày 4 tháng 8 năm 2017 lúc 6:5511 gold badges123 silver badges112 bronze badges

    Mã trên chỉ đơn giản là các vòng lặp trong suốt chuỗi một lần và tiếp tục kiểm tra xem bất kỳ chuỗi nào có bắt đầu với bộ nền cụ thể đang được tính không.

    def occurrences(string, sub):
        count = start = 0
        while True:
            start = string.find(sub, start) + 1
            if start > 0:
                count+=1
            else:
                return count
    
    9

    Đã trả lời ngày 19 tháng 9 năm 2017 lúc 23:12

    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    0

    Lưu ý rằng ngoài việc tĩnh, còn có những hạn chế khác:

    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    1

    Đã trả lời ngày 30 tháng 6 năm 2019 lúc 11:25Jun 30, 2019 at 11:25

    Danbrosdanbrosdanbros

    1511 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges

    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    2

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    Đã trả lời ngày 21 tháng 9 năm 2019 lúc 15:05Sep 21, 2019 at 15:05

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    Tôi muốn xem số lượng đầu vào của cùng một tiền tố char là cùng một postfix, ví dụ:

    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    12 và
    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    13 nhưng không thành công trên
    def function(string, str_to_search_for):
          count = 0
          for x in xrange(len(string) - len(str_to_search_for) + 1):
               if string[x:x+len(str_to_search_for)] == str_to_search_for:
                    count += 1
          return count
    
    
    function('1011101111','11')
    
    14:

    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    3

    Đã trả lời ngày 7 tháng 1 lúc 20:22Jan 7 at 20:22

    Một ta tA T

    12.4K18 Huy hiệu vàng91 Huy hiệu bạc154 Huy hiệu đồng18 gold badges91 silver badges154 bronze badges

    Giải pháp với các phần được thay thế của chuỗi

    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    4

    Trả lời là 4.

    Đã trả lời ngày 2 tháng 7 lúc 20:07Jul 2 at 20:07

    Nếu bạn muốn đếm số lượng hoán vị có độ dài 5 (điều chỉnh nếu muốn cho các độ dài khác nhau):

    >>> import re
    >>> text = '1011101111'
    >>> len(re.findall('(?=11)', text))
    5
    
    5

    Hướng dẫn python count overlapping substrings - số chuỗi con chồng chéo của python

    Himanshu

    30.9k30 Huy hiệu vàng107 Huy hiệu bạc129 Huy hiệu đồng30 gold badges107 silver badges129 bronze badges

    Đã trả lời ngày 20 tháng 9 năm 2012 lúc 8:19Sep 20, 2012 at 8:19

    1