使用Python(相邻)查找字符串中多个字符串的出现次数

时间:2018-03-28 06:30:31

标签: python-3.x

我最近开始学习Python编程。它如下:

对于s = 'xasdkbobobasdvobob',找到' bob'的出现次数。在s。

我已经能够编写一个能够输出2的代码但是我正在寻找的答案是3.

3 个答案:

答案 0 :(得分:0)

您也可以尝试使用支持重叠匹配的新Python正则表达式模块。

import re
s = 'xasdkbobobasdvobob'
print(len(list(re.finditer('(?=bob)', s))))

Python正则表达式模块

  

https://pypi.python.org/pypi/regex

答案 1 :(得分:0)

这个elsewhere on SO有基于正则表达式的解决方案,但你可以通过迭代查找每个“bob”而不需要RE来实现这一点:

s = 'xasdkbobobasdvobob'
pos = -1
count = 0
while True:
    pos = s.find('bob', pos + 1) # search from the character after the start of the last find
    if pos > -1: # found an instance
        count += 1
    else: # no more instances
        break
print count

答案 2 :(得分:0)

选项1

使用regex module

import regex


len(regex.findall(r"bob", s, overlapped=True))
# 3

sum(1 for _ in regex.finditer(r"bob", s, overlapped=True))
# 3

选项2

应用滑动window algorithm。在这里,我们使用第三方工具more_itertools.windowed

import more_itertools as mit


sum(1 for w in mit.windowed(s, 3) if w == tuple("bob"))
# 3

通过> pip install more_itertools安装library