首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当一个字母可以是任何东西时,找出子字符串出现的次数

当一个字母可以是任何东西时,找出子字符串出现的次数
EN

Stack Overflow用户
提问于 2020-06-07 04:21:54
回答 4查看 40关注 0票数 0

我正在尝试计算‘code’在一个子字符串中出现的次数,但是‘d’可以是任何字母,所以‘cope’和‘coze’也会被计算在内。我刚刚开始学习Python,我确信这非常简单,或许正则表达式也可以工作,但是我正在做的练习并不需要它。这只是一个网站上的练习题,不是为了学校或任何事情。任何帮助都将不胜感激。我试过所有我能想到的方法。这是我的最新版本,但它会出错并显示list out out my代码看起来像这样:

代码语言:javascript
复制
def count_code(str):
   sum = o
   for i in range(len(str)-1):
     if str[i:i+1] == ‘co’ and str[i+4] == ‘e’:
       sum += 1
     else:
       sum = 0
   return sum

调用将是:

代码语言:javascript
复制
count_code(‘codeeoedeeicoze’)

错误:字符串索引超出范围

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-06-07 04:36:12

或者这里有一个更接近你的代码,但是有一些各种各样的问题:

代码语言:javascript
复制
def count_code(word):
   result = 0
   for i in range(len(word)-3):
       if word[i:i+2] == "co" and word[i+3] == "e":
           result += 1
   return result

print(count_code('codeeoedeeicoze'))
票数 1
EN

Stack Overflow用户

发布于 2020-06-07 04:34:16

你可以通过re.finditer找到所有"co“的匹配项。之后,遍历找到的索引并检查第四个字母是否为"e“

再次重申,您绝对不应该使用sum和str作为变量/参数,因为它们是关键字。

代码语言:javascript
复制
    def count_code(code):
    import re
    sum_l = 0
    items = [ m.start() for m in re.finditer('co', code)] 
    for item in items: 
        if item+3 < len(code): 
            if code[item+3] == "e":
                sum_l += 1
    return sum_l

print(count_code("codeeoedeeicoze"))
OUT: 2
票数 0
EN

Stack Overflow用户

发布于 2020-06-07 04:40:51

首先,使用str作为形参是不可取的。试试这个

代码语言:javascript
复制
def count_code(s):
    sum = 0
    for i in range(len(s) - 3):
        if s[i : i + 2] == "co" and s[i + 3 : i + 4] == "e":
            sum = sum + 1
    return sum


print(count_code("codeeoedeeicoze"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62237576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档