поиск подстрок в Python - PullRequest
5 голосов
/ 25 апреля 2009

Не могли бы вы помочь мне получить подстроки между двумя символами в каждом случае

Например, чтобы получить все подстроки между «Q» и «E» в данном примере последовательности во всех случаях:

ex: QUWESEADFQDFSAEDFS

и найти подстроку с минимальной длиной.

Ответы [ 2 ]

16 голосов
/ 25 апреля 2009
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 голосов
/ 26 апреля 2009

RichieHindle имеет это право, за исключением того, что

substrings.sort(key=len)

- лучший способ выразить это, чем лишняя лямбда ;-).

Если вы используете Python 2.5 или более позднюю версию, min (substrings, key = len) на самом деле даст вам одну самую короткую строку (первую, если несколько строк связывают для "самой короткой"), немного быстрее, чем сортировка конечно, взяв [0] -й элемент. Но если вы застряли с 2.4 или более ранней версией, подход RichieHindle - лучшая альтернатива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...