计算字符串中的子字符串出现次数

时间:2017-10-02 12:18:05

标签: python

我想在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)

有人能帮帮我吗?

2 个答案:

答案 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'))

此功能使用正则表达式的正向前导来查找解决方案使用sumfor循环的原因是找到迭代次数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,我们就可以获得索引列表。