Hướng dẫn how do i find out how many times a string contains a substring in python? - Làm cách nào để tìm ra bao nhiêu lần một chuỗi chứa một chuỗi con trong python?

Tôi đang cố gắng tìm ra bao nhiêu lần một chuỗi xảy ra trong một chuỗi. Ví dụ:

nStr = '000123000123'

Giả sử chuỗi tôi muốn tìm là 123. Rõ ràng nó xảy ra hai lần trong NSTR nhưng tôi gặp khó khăn trong việc thực hiện logic này thành Python. Những gì tôi có vào lúc này:

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count

Câu trả lời sẽ trở lại là 2. Tôi đang bị mắc kẹt trong một vòng lặp vô hạn vào lúc này.

Tôi vừa mới biết rằng Bá tước là một cách tốt hơn nhiều để làm điều đó nhưng vì tò mò, có ai thấy cách để làm điều đó tương tự như những gì tôi đã có không?

Hướng dẫn how do i find out how many times a string contains a substring in python? - Làm cách nào để tìm ra bao nhiêu lần một chuỗi chứa một chuỗi con trong python?

Gino Mempin

21.4K25 Huy hiệu vàng87 Huy hiệu bạc115 Huy hiệu đồng25 gold badges87 silver badges115 bronze badges

hỏi ngày 13 tháng 7 năm 2012 lúc 18:59Jul 13, 2012 at 18:59

user1294377user1294377user1294377

1.0411 Huy hiệu vàng10 Huy hiệu bạc13 Huy hiệu đồng1 gold badge10 silver badges13 bronze badges

0

Sử dụng

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
7:

>>> nStr = '000123000123'
>>> nStr.count('123')
2

Một phiên bản làm việc của mã của bạn:

nStr = '000123000123'
pattern = '123'
count = 0
flag = True
start = 0

while flag:
    a = nStr.find(pattern, start)  # find() returns -1 if the word is not found, 
    #start i the starting index from the search starts(default value is 0)
    if a == -1:          #if pattern not found set flag to False
        flag = False
    else:               # if word is found increase count and set starting index to a+1
        count += 1        
        start = a + 1
print(count)

Đã trả lời ngày 13 tháng 7 năm 2012 lúc 19:00Jul 13, 2012 at 19:00

Hướng dẫn how do i find out how many times a string contains a substring in python? - Làm cách nào để tìm ra bao nhiêu lần một chuỗi chứa một chuỗi con trong python?

Ashwini Chaudharyashwini ChaudharyAshwini Chaudhary

238K56 Huy hiệu vàng449 Huy hiệu bạc498 Huy hiệu Đồng56 gold badges449 silver badges498 bronze badges

1

Vấn đề với

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
8 và các phương pháp khác được hiển thị ở đây là trong trường hợp các nền tảng chồng chéo.

Ví dụ:

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
9 trả về 2

Nếu bạn muốn nó trở lại 4 [

>>> nStr = '000123000123'
>>> nStr.count('123')
2
0], bạn có thể thử một cái gì đó như thế này:

def count_substrings(string, substring):
    string_size = len(string)
    substring_size = len(substring)
    count = 0
    for i in xrange(0,string_size-substring_size+1):
        if string[i:i+substring_size] == substring:
            count+=1
    return count

count_substrings("aaaaaa", "aaa")
# 4

Không chắc chắn nếu có một cách hiệu quả hơn để làm điều đó, nhưng tôi hy vọng điều này làm rõ cách thức hoạt động của

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
8.

Đã trả lời ngày 5 tháng 6 năm 2013 lúc 3:49Jun 5, 2013 at 3:49

1

import re

pattern = '123'

n =re.findall(pattern, string)

Chúng ta có thể nói rằng phần "mẫu 'của nền tảng xuất hiện LEN (n) lần trong' chuỗi '.

David c

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

Đã trả lời ngày 16 tháng 7 năm 2012 lúc 5:18Jul 16, 2012 at 5:18

1

Trong trường hợp bạn đang tìm kiếm cách giải quyết vấn đề này cho các trường hợp chồng chéo.

s = 'azcbobobegghaklbob'
str = 'bob'
results = 0
sub_len = len(str) 
for i in range(len(s)):
    if s[i:i+sub_len] == str: 
        results += 1
print (results)

Sẽ dẫn đến 3 vì: [AZC (Bob) Obegghaklbob] [Azcbo (Bob) Egghaklbob] [Azcbobobegghakl (Bob)]

Đã trả lời ngày 7 tháng 6 năm 2019 lúc 17:36Jun 7, 2019 at 17:36

TawabgtawabgTawabG

4825 Huy hiệu bạc8 Huy hiệu Đồng5 silver badges8 bronze badges

Tôi khá mới, nhưng tôi nghĩ đây là một giải pháp tốt? có lẽ?

def count_substring(str, sub_str):
    count = 0
    for i, c in enumerate(str):
        if sub_str == str[i:i+2]:
            count += 1
    return count

Đã trả lời ngày 14 tháng 9 năm 2019 lúc 0:47Sep 14, 2019 at 0:47

String.Count (Subring) không hữu ích trong trường hợp chồng chéo.

Cách tiếp cận của tôi:

def count_substring(string, sub_string):

    length = len(string)
    counter = 0
    for i in range(length):
        for j in range(length):
            if string[i:j+1] == sub_string:
                counter +=1
    return counter

Đã trả lời ngày 16 tháng 2 năm 2017 lúc 10:56Feb 16, 2017 at 10:56

Gaurav Parashargaurav ParasharGaurav Parashar

1.0282 Huy hiệu vàng14 Huy hiệu bạc21 Huy hiệu đồng2 gold badges14 silver badges21 bronze badges

Bạn không thay đổi

>>> nStr = '000123000123'
>>> nStr.count('123')
2
2 với mỗi vòng lặp. Bạn nên đặt:

a += nStr[a:].find(pattern)+1

...thay vì:

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
0

Hướng dẫn how do i find out how many times a string contains a substring in python? - Làm cách nào để tìm ra bao nhiêu lần một chuỗi chứa một chuỗi con trong python?

e_i_pi

4.4314 Huy hiệu vàng25 Huy hiệu bạc45 Huy hiệu Đồng4 gold badges25 silver badges45 bronze badges

Đã trả lời ngày 4 tháng 1 năm 2018 lúc 4:07Jan 4, 2018 at 4:07

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
1

Đã trả lời ngày 23 tháng 10 năm 2018 lúc 15:13Oct 23, 2018 at 15:13

Như đã đề cập bởi @joão pesce và @gaurav,

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
8 không hữu ích trong trường hợp các nền tảng chồng chéo, hãy thử điều này ...

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
2

Đã trả lời ngày 11 tháng 2 năm 2019 lúc 12:44Feb 11, 2019 at 12:44

Hướng dẫn how do i find out how many times a string contains a substring in python? - Làm cách nào để tìm ra bao nhiêu lần một chuỗi chứa một chuỗi con trong python?

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
3

Shir

1.11612 huy hiệu bạc35 huy hiệu đồng12 silver badges35 bronze badges

Đã trả lời ngày 22 tháng 4 năm 2019 lúc 9:13Apr 22, 2019 at 9:13

Hướng dẫn how do i find out how many times a string contains a substring in python? - Làm cách nào để tìm ra bao nhiêu lần một chuỗi chứa một chuỗi con trong python?

Thông thường tôi đang sử dụng liệt kê cho loại vấn đề này:

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
4

Đã trả lời ngày 23 tháng 4 năm 2020 lúc 2:25Apr 23, 2020 at 2:25

Hướng dẫn how do i find out how many times a string contains a substring in python? - Làm cách nào để tìm ra bao nhiêu lần một chuỗi chứa một chuỗi con trong python?

1

Def Count (Sub_String, String):

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
5

Đã trả lời ngày 9 tháng 6 năm 2020 lúc 7:02Jun 9, 2020 at 7:02

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
6

Đã trả lời ngày 19 tháng 12 năm 2021 lúc 22:53Dec 19, 2021 at 22:53

Hướng dẫn how do i find out how many times a string contains a substring in python? - Làm cách nào để tìm ra bao nhiêu lần một chuỗi chứa một chuỗi con trong python?

1

Làm thế nào để bạn đếm số lượng chuỗi con trong một chuỗi?

Số lượng chuỗi con có độ dài một là N (chúng ta có thể chọn bất kỳ ký tự N nào).
Số lượng chuỗi con có độ dài hai là N-1 (chúng ta có thể chọn bất kỳ cặp N-1 nào được hình thành bởi liền kề).
Số lượng chất nền có chiều dài ba là N-2. ....
Nói chung, số lượng chuỗi con có độ dài k là n-k+1 trong đó 1

Làm cách nào để tìm hiểu bao nhiêu lần một chuỗi được lặp lại trong Python?

Đếm () Một trong những cách tích hợp trong đó bạn có thể sử dụng Python để đếm số lần xuất hiện trong chuỗi là sử dụng chuỗi tích hợp. Phương thức đếm (). Phương thức lấy một đối số, một ký tự hoặc một chuỗi con và trả về số lần ký tự tồn tại trong chuỗi được liên kết với phương thức. One of the built-in ways in which you can use Python to count the number of occurrences in a string is using the built-in string . count() method. The method takes one argument, either a character or a substring, and returns the number of times that character exists in the string associated with the method.

Làm thế nào để bạn tìm thấy sự xuất hiện của một chuỗi con?

Explanation..
Lấy hai chuỗi là str1 và str2 ..
Phương thức đệ quy Subrting_Rec (String str, String sub) lấy chuỗi str và phụ con của nó và trả về số lần xuất hiện của sub in str ..
Kiểm tra xem str.contains (phụ) có đúng không.(...
Nếu đúng thì thay thế lần xuất hiện đầu tiên của Sub bằng cách sử dụng str ..