2024-09-30 01:29:28 发布
网友
我写了一段代码来从字符串中找到子字符串。它打印所有子字符串。 但是我想要一个长度从2到6的子字符串,并打印最小长度的子字符串。 请帮帮我
课程:
import re p=re.compile('S(.+?)N') s='ASDFANSAAAAAFGNDASMPRKYN' s1=p.findall(s) print s1
输出:
期望输出:
'DFA' length=3
regex 'S(.{2,6}?)N'将只提供长度为2-6个字符的匹配项。在
'S(.{2,6}?)N'
{return To the shortest}使用匹配的子环。在
完整示例:
import re p=re.compile('S(.{2,6}?)N') s='ASDFANSAAAAAFGNDASMPRKYNSAAN' s1=p.findall(s) if s1: print sorted(s1, key=len)[0] print min(s1, key=len) # as suggested by Nick Presta
这是通过按长度对findall返回的列表进行排序,然后返回排序后的列表中的第一项。在
findall
编辑:尼克·普雷斯塔的回答更为优雅,我不知道min也可以采用key的论点。。。在
min
key
如果已经有了列表,可以使用min函数和len函数作为第二个参数。在
>>> s1 = ['DFA', 'AAAAAFG', 'MPRKY'] >>> min(s1, key=len) 'DFA'
编辑: 如果两个元素的长度相同,则可以进一步扩展此值以生成一个包含长度相同的元素的列表:
当只有1个“最短”元素时,上述方法也应该起作用。在
编辑2:为了完成,至少根据我的简单测试,计算最短元素的长度并将其用于列表理解应该更快。以上更新。在
regex
'S(.{2,6}?)N'
将只提供长度为2-6个字符的匹配项。在{return To the shortest}使用匹配的子环。在
完整示例:
这是通过按长度对
findall
返回的列表进行排序,然后返回排序后的列表中的第一项。在编辑:尼克·普雷斯塔的回答更为优雅,我不知道
min
也可以采用key
的论点。。。在如果已经有了列表,可以使用min函数和len函数作为第二个参数。在
编辑:
^{pr2}$如果两个元素的长度相同,则可以进一步扩展此值以生成一个包含长度相同的元素的列表:
当只有1个“最短”元素时,上述方法也应该起作用。在
编辑2:为了完成,至少根据我的简单测试,计算最短元素的长度并将其用于列表理解应该更快。以上更新。在
相关问题 更多 >
编程相关推荐