如何以特定间隔迭代字符串?

时间:2018-05-31 01:23:19

标签: python python-3.x

我想编写这段代码来计算给定字符串中'bob'的数量。这就是为什么我希望能够一次扫描三个字符的字符串,但是当我这样做时代码不回报权利 '鲍勃'的数量。请帮忙,我的代码在下面。

# This function does not work correctly yet
# This function counts the number of bobs in a string
def bobs_counter():
    bob_count = 0
    s = 'waterbob'
    s_len = len(s)
    bob_counter = "bob"
    for q in range(0, s_len+1, 3):
        if bob_counter in s:
            bob_count += 1
        else:
            break
    print(bob_count)

bobs_counter()

2 个答案:

答案 0 :(得分:0)

您只需使用'waterbob'.count('bob')

'waterbob'.count('bob')    # 1
'bobwaterbob'.count('bob') # 2

答案 1 :(得分:0)

对于非重叠,您可以使用@ BubbleBubbleBubbleGut的建议。

否则,您希望一次一步地遍历字符串,但每次比较3个字符。

实施例

s = 'waterbobob'
match = 'bob'
match_count = 0
for i in range(0, len(s) + 1 - len(match)):
# this start the matching from the beginning to the last segment at the match length

    if s[i:i+len(match)] == match:
    # slice the string at the index + match length, giving you a segment of the exact length of the match to compare.
        match_count += 1

# match_count = 2

根据您的初始定义,这适用于任何smatch。这当然是区分大小写的。如果您需要非区分大小写的版本,请考虑在比较之前将所有内容转换为大写/小写。