我想在python中编写一个循环,检查0-2中前三个字母的某个单词,然后检查1-3中的下一个字母是否为同一个单词。
这是我的代码到目前为止,它总是只在输入之后输出1。
Count = 0
start = 0
end = start + 2
word = 'dad'
string = input('Type in a word')
for word in string[start-end]:
if word in string:
Count = Count + 1
start = start + 1
print (Count)
有人能帮帮我吗?
答案 0 :(得分:0)
word = 'dad'
string = input('Type in a word')
print (string.count(word))
我认为你正在寻找
答案 1 :(得分:0)
我试图优化代码。此代码适用于重叠,而非重叠匹配count
可以使用。
string = 'dadada'
substring = 'dad'
results = 0
sub_len = len(substring)
for i in range(len(string)):
if string[i:i+sub_len] == substring:
results += 1
print results
<强>替代强>
虽然这个过程适合OP,但对于未来的访问者来说,最好有更好的选择。 正如评论部分所述。
import re
results = sum(1 for _ in re.finditer('(?=dad)', 'dadada'))
此功能使用正则表达式的正向前导来查找解决方案使用sum
和for
循环的原因是找到迭代次数finditer
返回迭代器。
用户也可以尝试len(list(re.finditer('(?=dad)', 'dadada')))
,它会将迭代器转换为列表并查找长度。
非替代
string = 'dadada'
sub = 'dad'
print len([n for n in xrange(len(string)) if string.find(sub, n) == n])
这是使用find
的自定义方法str
功能的实现。如果我们删除len
,我们就可以获得索引列表。