cómo puedo obtener una cadena después de una subcadena específica.Obtener una cadena después de una subcadena específica
Por ejemplo quiero obtener la cadena después de "world"
en my_string="hello python world , i'm a beginner "
cómo puedo obtener una cadena después de una subcadena específica.Obtener una cadena después de una subcadena específica
Por ejemplo quiero obtener la cadena después de "world"
en my_string="hello python world , i'm a beginner "
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.
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
.
+1 por no crear copias/subcadenas innecesarias – shx2
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
algunas personas cuando se enfrentan con un problema, piense "Lo sé, usaré una expresión regular". ... ahora tienes 2 problemas ... –
jaja, mi error, pensé que esto estaba etiquetado como regex, así que traté de dar una respuesta regular. Oh, bueno, está allí ahora. – Tadgh
es todo bien ... sin duda es una forma de despellejar a este gato ... demasiado para este problema (0203) –
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.
Esta es una buena solución y maneja el caso en el que la subcadena no forma parte de la cadena base. – mattmc3
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!
Quizás también podría simplemente usar: '' string.partition ("low") [2] ''? (Tenga en cuenta los espacios a ambos lados de '' bajo'' –
"la manera más fácil es, probablemente, solo escupir en su palabra de destino" :-) Sí, esa es la forma correcta de hacerlo. – Matthias
's/spit/split /' esa respuesta, a menos que realmente estés frustrado con tus datos. Pero por lo demás, perfecto. – abarnert
Si necesito dividir un texto con la palabra 'baja' y contiene la palabra más baja antes, ¡esto no funcionará! –