2009-04-25 13 views
5

¿Me podría ayudar a conseguir las subseries entre dos personajes en cada casosubseries encontrar en pitón

Por ejemplo, para obtener todas las subcadenas entre "Q" y "E" en la secuencia de ejemplo que se da en todos los casos:

ex: QUWESEADFQDFSAEDFS 

y para encontrar la subcadena con una longitud mínima.

+0

¿Podría por favor revisar su pregunta y hacerla un poco legible, proporcionando también más detalles? Gracias. – hyperboreean

Respuesta

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 tiene razón, excepto que

substrings.sort(key=len) 

es una mejor manera de expresar que eso lambda redundante ;-).

Si está usando Python 2.5 o posterior, min (substrings, key = len) le dará la cadena más corta (la primera, si varias cadenas vinculan a "más corta") bastante más rápido que la clasificación y tomando el elemento [0] th, por supuesto. Pero si estás atrapado con 2.4 o antes, el enfoque de RichieHindle es la mejor alternativa.

+0

Buen punto sobre la lambda, ¿en qué estaba pensando? 8-) – RichieHindle