我编写了一个代码来查找字符串中的子字符串.它打印所有子串.但我想要一个范围从长度2到6的子字符串并打印最小长度的子字符串.请帮我
程序:
import re
p=re.compile('S(.+?)N')
s='ASDFANSAAAAAFGNDASMPRKYN'
s1=p.findall(s)
print s1
Run Code Online (Sandbox Code Playgroud)
输出:
['DFA', 'AAAAAFG', 'MPRKY']
Run Code Online (Sandbox Code Playgroud)
期望的输出:
'DFA' length=3
Run Code Online (Sandbox Code Playgroud)
如果已有列表,则可以使用min函数和len函数作为第二个参数.
>>> s1 = ['DFA', 'AAAAAFG', 'MPRKY']
>>> min(s1, key=len)
'DFA'
Run Code Online (Sandbox Code Playgroud)
编辑:
如果两个长度相同,您可以进一步扩展它以生成包含长度相同的元素的列表:
>>> s2 = ['foo', 'bar', 'baz', 'spam', 'eggs', 'knight']
>>> s2_min_len = len(min(s2, key=len))
>>> [e for e in s2 if len(e) is s2_min_len]
['foo', 'bar', 'baz']
Run Code Online (Sandbox Code Playgroud)
当只有1'最短'元素时,上述应该有效.
编辑2:为了完成,至少根据我的简单测试,它应该更快,以计算最短元素的长度并在列表理解中使用它.上面更新了.
| 归档时间: |
|
| 查看次数: |
1733 次 |
| 最近记录: |