Вопрос-Ответ

Count number of occurrences of a substring in a string

Подсчитать количество вхождений подстроки в строку

Как я могу подсчитать, сколько раз данная подстрока присутствует в строке в Python?

Например:

>>> 'foo bar foo'.numberOfOccurrences('foo')
2

Чтобы получить индексы подстрок, см. Как найти все вхождения подстроки?.

Переведено автоматически
Ответ 1

string.count(substring), как в:

>>> "abcdabcva".count("ab")
2

Это для неперекрывающихся вхождений.

Если вам нужно подсчитать перекрывающиеся вхождения, вам лучше проверить ответы здесь или просто проверьте мой другой ответ ниже.

Ответ 2
s = 'arunununghhjj'
sb = 'nun'
results = 0
sub_len = len(sb)
for i in range(len(s)):
if s[i:i+sub_len] == sb:
results += 1
print results
Ответ 3

В зависимости от того, что вы на самом деле имеете в виду, я предлагаю следующие решения:


  1. Вы имеете в виду список подстрок, разделенных пробелом, и хотите знать, каков номер позиции подстроки среди всех подстрок:


    s = 'sub1 sub2 sub3'
    s.split().index('sub2')
    >>> 1

  2. Вы имеете в виду позицию символа подстроки в строке:


    s.find('sub2')
    >>> 5

  3. Вы имеете в виду (неперекрывающиеся) подсчеты появления sub-bstring:


    s.count('sub2')
    >>> 1
    s.count('sub')
    >>> 3

Ответ 4

Лучший способ найти перекрывающиеся подстроки в данной строке - использовать регулярное выражение. С помощью lookahead программа найдет все перекрывающиеся совпадения, используя библиотеку регулярных выражений findall(). Здесь слева находится подстрока, а справа - строка для сопоставления.

>>> len(re.findall(r'(?=aa)', 'caaaab'))
3
2023-12-16 20:50 python string