首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python挑战赛3级

Python挑战赛3级
EN

Stack Overflow用户
提问于 2018-08-25 00:35:00
回答 1查看 145关注 0票数 0

我知道很多人都问过这个问题,但想看看是否有人愿意就我的代码提供一些反馈,以及为什么它不能工作。对于那些不熟悉这个问题的人,我使用了一个巨大的字符串,并试图识别两边恰好由三个大写字母包围的小写字母(所以两边的第四个字符应该是小写的)。奇怪的是,我的代码有时在较短的字符串上工作,然后随机地停止工作。但是它永远不能处理完整的字符串(可能是10,000+字符)。好的,下面是代码:

代码语言:javascript
运行
复制
def python_challenge_3(code):
 for letter in code[3:-3]:
    if letter.islower():
        i = code.index(letter)
        if code[i-3:i].isupper() and code[i-4].islower() and code[i+1:i+4].isupper() and code[i+4].islower():
            return code[i-3:i+4]
        else:
            continue
    else:
        continue

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-08-25 01:07:24

您可以使用regular expressions根据您指定的条件提取字符。代码可能如下所示:

代码语言:javascript
运行
复制
import re

def extract(txt: str) -> list:
    return re.findall(r'[a-z][A-Z]{3}([a-z]{1})[A-Z]{3}[a-z]', txt)

if __name__ == '__main__':
    print(extract('abCDEfGHIjklMNOpQRStUVwXYz'))

这会打印出所有匹配的内容:

代码语言:javascript
运行
复制
>>> ['f', 'p']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52008561

复制
相关文章

相似问题

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