2012-09-24 14 views

Respuesta

189

La forma más sencilla es probablemente sólo para dividir en su palabra objetivo

my_string="hello python world , i'm a beginner " 
print my_string.split("world",1)[1] 

dividida toma la palabra (o carácter) para dividir el y opcionalmente un límite para el número de divisiones.

En este ejemplo, divida en "mundo" y limítelo a una sola división.

+12

"la manera más fácil es, probablemente, solo escupir en su palabra de destino" :-) Sí, esa es la forma correcta de hacerlo. – Matthias

+5

's/spit/split /' esa respuesta, a menos que realmente estés frustrado con tus datos. Pero por lo demás, perfecto. – abarnert

+0

Si necesito dividir un texto con la palabra 'baja' y contiene la palabra más baja antes, ¡esto no funcionará! –

29
s1 = "hello python world , i'm a beginner " 
s2 = "world" 

print s1[s1.index(s2) + len(s2):] 

Si usted quiere tratar con el caso en que s2 es no presente en s1, a continuación, utilizar s1.find(s2) en contraposición a index. Si el valor de retorno de esa llamada es -1, entonces s2 no está en s1.

+2

+1 por no crear copias/subcadenas innecesarias – shx2

10

Si quieres hacer esto usando expresiones regulares, simplemente podría utilizar un non-capturing group, para obtener el "mundo" palabra y luego agarrar todo lo que después, al igual que

(?:world).* 

La cadena de ejemplo se prueba here

+9

algunas personas cuando se enfrentan con un problema, piense "Lo sé, usaré una expresión regular". ... ahora tienes 2 problemas ... –

+2

jaja, mi error, pensé que esto estaba etiquetado como regex, así que traté de dar una respuesta regular. Oh, bueno, está allí ahora. – Tadgh

+1

es todo bien ... sin duda es una forma de despellejar a este gato ... demasiado para este problema (0203) –

24

Me sorprende que nadie haya mencionado partition.

def substring_after(s, delim): 
    return s.partition(delim)[2] 

En mi humilde opinión, esta solución es más legible que la de @ arshajii. Aparte de eso, creo que @ arshajii es el mejor por ser el más rápido: no crea copias/subcadenas innecesarias.

+2

Esta es una buena solución y maneja el caso en el que la subcadena no forma parte de la cadena base. – mattmc3

2

Es una vieja pregunta, pero me enfrenté a un mismo escenario, necesito dividir una cadena usando como desilusión la palabra "bajo" el problema para mí fue que tengo en la misma cadena la palabra debajo y debajo.

Lo resuelto mediante el módulo de regreso de esta manera

import re 

string = '...below...as higher prices mean lower demand to be expected. Generally, a high reading is seen as negative (or bearish), while a low reading is seen as positive (or bullish) for the Korean Won.' 

uso re.split con expresiones regulares para que coincida con la palabra exacta

stringafterword = re.split('\\blow\\b',string)[-1] 
print(stringafterword) 
' reading is seen as positive (or bullish) for the Korean Won.' 

el código genérico es:

re.split('\\bTHE_WORD_YOU_WANT\\b',string)[-1] 

¡Espero que esto pueda ayudar a alguién!

+1

Quizás también podría simplemente usar: '' string.partition ("low") [2] ''? (Tenga en cuenta los espacios a ambos lados de '' bajo'' –

Cuestiones relacionadas