5

你能帮我在每次出现时获取两个字符之间的子字符串吗

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

ex: QUWESEADFQDFSAEDFS

并找到具有最小长度的子字符串。

4

2 回答 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]
于 2009-04-25T11:14:49.650 回答
7

RichieHindle 是对的,除了

substrings.sort(key=len)

是一种比冗余 lambda 更好的表达方式;-)。

如果您使用的是 Python 2.5 或更高版本, min(substrings, key=len) 实际上会为您提供一个最短的字符串(第一个,如果多个字符串与“最短”相关联)比排序和获取 [ 0]th 元素,当然。但如果您坚持使用 2.4 或更早版本,RichieHindle 的方法是最好的选择。

于 2009-04-26T04:21:40.947 回答