在讨论Python Challenge中的一个问题时,我试图按如下方式解决它:
在文本文件中读取输入,字符如下:
DQheAbsaMLjTmAOKmNsLziVMenFxQdATQIjItwtyCHyeMwQTNxbbLXWZnGmDqHhXnLHfEyvzxMhSXzd
BEBaxeaPgQPttvqRvxHPEOUtIsttPDeeuGFgmDkKQcEYjuSuiGROGfYpzkQgvcCDBKrcYwHFlvPzDMEk
MyuPxvGtgSvWgrybKOnbEGhqHUXHhnyjFwSfTfaiWtAOMBZEScsOSumwPssjCPlLbLsPIGffDLpZzMKz
jarrjufhgxdrzywWosrblPRasvRUpZLaUbtDHGZQtvZOvHeVSTBHpitDllUljVvWrwvhpnVzeWVYhMPs
kMVcdeHzFZxTWocGvaKhhcnozRSbWsIEhpeNfJaRjLwWCvKfTLhuVsJczIYFPCyrOJxOPkXhVuCqCUgE
luwLBCmqPwDvUPuBRrJZhfEXHXSBvljqJVVfEGRUWRSHPeKUJCpMpIsrV.......
我需要的是浏览这个文本文件,并选择所有的小写字母,这些字母的两边都只有三个大写字母。在
我编写的用于执行上述操作的python脚本如下:
^{pr2}$上面给定的脚本不是返回capture(小写字符列表),而是返回满足正则表达式条件的所有文本块,例如
aXCSdFGHj
vCDFeTYHa
nHJUiKJHo
.........
.........
有人能告诉我我到底做错了什么吗?有没有其他方法可以在整个文件上运行正则表达式搜索,而不是在整个文件中循环?在
谢谢
findall
做什么:可能是
re
模块中最有用的函数。在函数的作用是:将整个文件读入大字符串。如果需要将正则表达式与整个文件相匹配,这一点尤其有用。在
警告:根据文件的大小,您可能喜欢像第一种方法那样逐行迭代文件。在
将
result.groups()
更改为result.group(1)
,您将只得到单个字母的匹配。在代码的第二个问题是它不会在一行找到多个结果。你需要用cd4{3}代替cd3}。
findall
将返回字符串或字符串元组,而finditer
返回匹配对象。在我在这里找到了同样的问题:
注意,}返回非重叠结果。因此,当使用上面的模式时,}。幸运的是,这个Python挑战问题不包含这样的示例。在
re.findall
和{re.findall
搜索字符串'aBBBcDDDeFFFg'
,唯一匹配的将是'c'
,而不是{我建议使用环视:
这对重叠匹配没有问题。在
说明:
^{pr2}$相关问题 更多 >
编程相关推荐