在Python中查找子字符串

5

您能帮我获取每个出现的两个字符之间的子字符串吗?

例如,在给定示例序列中获取所有出现的在 "Q" 和 "E" 之间的子字符串:

ex: QUWESEADFQDFSAEDFS

并且要找到长度最小的子字符串。


请您能否检查一下您的问题并让它更易读一些,同时提供更多细节?谢谢。 - hyperboreean
2个回答

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]

7
RichieHindle说得对,除了
substrings.sort(key=len)

相比冗余的lambda函数,使用min(substrings, key=len)更好地表达它;-)。

如果你使用的是Python 2.5或更高版本,则使用min(substrings, key=len)将比排序并取[0]th元素更快地给出最短的一个字符串(如果有多个字符串长度相同,则返回第一个)。但是如果你只能使用2.4或更早版本的Python,则RichieHindle的方法是最佳选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接