请你帮我在每次出现时获得两个字符之间的子串
例如,在所有出现的事件中获取给定示例序列中“Q”和“E”之间的所有子串:
ex: QUWESEADFQDFSAEDFS
并找到最小长度的子字符串。
答案 0 :(得分:16)
import re
DATA = "QUWESEADFQDFSAEDFS"
# Get all the substrings between Q and E:
substrings = re.findall(r'Q([^E]+)E', DATA)
print "Substrings:", substrings
# Sort by length, then the first one is the shortest:
substrings.sort(key=lambda s: len(s))
print "Shortest substring:", substrings[0]
答案 1 :(得分:7)
RichieHindle说得对,除了
substrings.sort(key=len)
是一种比冗余lambda更好的表达方式;-)。
如果你使用的是Python 2.5或更高版本,min(substrings,key = len)实际上会给你一个最短的字符串(第一个字符串,如果几个字符串与“shortest”相关联)比排序和当然,取第[0]个元素。但如果你坚持2.4或更早,RichieHindle的方法是最好的选择。