如何在Python中查找同一单词中的重复字母?

2024-04-25 14:08:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决一个challenge在给定字符串中寻找某种模式的问题。我想到的第一个想法是在字符上循环并找到模式。在

(“压力”主题行表示所有字母都是大写字母,和/或结尾至少有3个感叹号,和/或至少包含以下一个红色单词:“帮助”、“尽快”、“紧急”。任何一个红色的单词都可以用不同的方式拼写-“HELP”,“HELP”,“HELP”,“H!E!我!P!““H-E-L-P”,甚至用一种非常粗俗的方式“Hhheeeeeeellp”)

有人提交了下面的代码,我不明白是怎么回事。这是怎么回事?在

return (subj.isupper() or
    subj.endswith('!!!') or
    any(re.search('+[.!-]*'.join(c for c in word), subj.lower())
        for word in ['help', 'asap', 'urgent']))

Tags: or字符串in主题for方式模式help
2条回答

此代码只是检查是否满足3个条件中的任何一个

  • 第一个sub.isupper()如果每个字符都是大写的,则返回True

  • 第二个subj.endswith('!!!')检查单词是否以!!!结尾

  • 第三种方法是使用正则表达式匹配红色单词,并使用any方法检查是否匹配了红色单词

第3部分>

对于每个red wordfor word in ['help', 'asap', 'urgent']),该单词将以小写形式转换并用于生成正则表达式。在

正则表达式部分

例如,'+[.!-]*'.join(c for c in 'help')给出h+[.!-]*e+[.!-]*l+[.!-]*p,它检查单词的每个字母,根据需要重复多次,并且所有字母按需要用.!或{}分隔。在

任何部分

最后,any如果生成器的任何布尔值是True,则返回{}。所以如果正则表达式匹配任何红色单词。在

如果我们以“帮助”这个词为例:

subj.isupper()如果subj="HELP",则返回true

subj.endswith('!!!')如果subj="help!!!",则返回true

subj.lower()强制将字符串转换为小写subj="HelP"->;subj="help"

re.search('+[.!-]*'.join(c for c in word)连接/删除相邻的相同字符,例如,它将把“heeellp”转换为“help”

相关问题 更多 >