Python字符串切片示例集

Python字符串切片示例集,python,string,algorithm,python-3.x,slice,Python,String,Algorithm,Python 3.x,Slice,我已经研究这个问题好几个小时了,但我似乎还是不明白。我的逻辑和这个很不一致 目标是根据问题要求的预期输出,确定单词“bob”出现的次数,即=2 我只是不知道怎么去那里。我得到的结果是: s = 'azcbobobegghakl' bob = 0 for i in range(len(s)): print(s[i: i+3]) print("Number of times bob occurs is: ", bob) 如果有人回答这个问题,请向我解释你是如何得到答案的。提前感谢请检查代码

我已经研究这个问题好几个小时了,但我似乎还是不明白。我的逻辑和这个很不一致

目标是根据问题要求的预期输出,确定单词“bob”出现的次数,即=2

我只是不知道怎么去那里。我得到的结果是:

s = 'azcbobobegghakl'
bob = 0
for i in range(len(s)):
    print(s[i: i+3])
print("Number of times bob occurs is: ", bob)
如果有人回答这个问题,请向我解释你是如何得到答案的。提前感谢

请检查代码

s = 'azcbobobegghakl'
bob = 0
for i in range(len(s)):
    print(s[i: i+3])
    if s[i: i+3] == "bob":
        bob += 1
print("Number of times bob occurs is: ", bob)
输出是,

azc
zcb
cbo
bob
obo
bob
obe
beg
egg
ggh
gha
hak
akl
kl
l
Number of times bob occurs is:  2
请检查代码

s = 'azcbobobegghakl'
bob = 0
for i in range(len(s)):
    print(s[i: i+3])
    if s[i: i+3] == "bob":
        bob += 1
print("Number of times bob occurs is: ", bob)
输出是,

azc
zcb
cbo
bob
obo
bob
obe
beg
egg
ggh
gha
hak
akl
kl
l
Number of times bob occurs is:  2

下面的代码段使用正则表达式库
re
查找不重叠的子字符串,并将找到的所有实例作为列表返回<列表的code>len()是出现的次数

import re
number_of_bob = len(re.findall("bob", "azcbobobegghakl"))
这种方法不适用于重叠模式。要查找一行中重叠的子字符串数,请执行以下操作:

number_of_bob = sum(1 for i in range(len(s)-2) if s[i:i+3] == 'bob')

下面的代码段使用正则表达式库
re
查找不重叠的子字符串,并将找到的所有实例作为列表返回<列表的code>len()是出现的次数

import re
number_of_bob = len(re.findall("bob", "azcbobobegghakl"))
这种方法不适用于重叠模式。要查找一行中重叠的子字符串数,请执行以下操作:

number_of_bob = sum(1 for i in range(len(s)-2) if s[i:i+3] == 'bob')

你的答案很简单。你已经解决了一半的问题。在字符串上迭代三次。您需要知道的是,测试这些子字符串中是否有任何一个子字符串等于字符串
“bob”
。如果是,则将
bob
计数器增加
1

>>> s = 'azcbobobegghakl'
>>> bob = 0
>>> 
>>> for i in range(len(s)):
    substr = s[i: i + 3]
    # is the current three letter substring equal to "bob"?
    if substr == 'bob':
        # if so, increment the counter by one.
        bob += 1


>>> bob
2
>>> 

你的答案很简单。你已经解决了一半的问题。在字符串上迭代三次。您需要知道的是,测试这些子字符串中是否有任何一个子字符串等于字符串
“bob”
。如果是,则将
bob
计数器增加
1

>>> s = 'azcbobobegghakl'
>>> bob = 0
>>> 
>>> for i in range(len(s)):
    substr = s[i: i + 3]
    # is the current three letter substring equal to "bob"?
    if substr == 'bob':
        # if so, increment the counter by one.
        bob += 1


>>> bob
2
>>> 

您需要将
s[i:i+3]
“bob”
进行比较,如果相等,则增加您的
bob
计数。您需要将
s[i:i+3]
“bob”
进行比较,如果相等,则增加您的
bob
计数。实际上,findall只查找不重叠的匹配项,因此您的代码将返回1,不是2。虽然此代码可以回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文可提高其长期价值。@Donald Duck answer已更正,谢谢。实际上findall只查找非重叠匹配项-因此您的代码将返回1,而不是2。虽然此代码可以回答此问题,提供有关此代码为什么和/或如何回答此问题的其他上下文,可以提高其长期价值。@Donald Duck答案已更正,谢谢。