Python挑战3级

时间:2018-08-24 16:35:00

标签: python

我知道很多其他人都在问这个问题,但是我想看看是否有人能对我的代码提供一些反馈以及为什么它不起作用。对于那些不熟悉此问题的人,我使用了一个巨大的字符串,并试图确定一个在两侧均被三个大写字母包围的小写字母(因此,每侧的第四个字符将是小写的)。奇怪的是,我的代码有时可以在较短的字符串上运行,然后随机停止工作。但是它永远无法在完整的字符串(可能超过10,000个字符)上使用。 OK,这是代码:

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

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用regular expressions根据指定的条件提取字符。代码可能看起来像这样:

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

这会打印出所有匹配项:

>>> ['f', 'p']