La respuesta corta, como @ THC4K señala en un comentario:
string.split(pattern, 1)[0]
donde string
es su cadena original, pattern
es su patrón de "ruptura", 1
indica que dividir no más de 1 hora y [0]
significa tomar el primer elemento devuelto por división.
en acción:
>>> s = "a descriptor 23 fd"
>>> s.split("23", 1)[0]
'a descriptor '
>>> s.split("fdasfdsafdsa", 1)[0]
'a descriptor 23 fd'
Esta es una forma mucho más corta de expresar lo que había escrito antes, lo que voy a seguir aquí de todos modos.
Y si tiene que quitar varios patrones, esto es un gran candidato para el reduce
orden interna:
>>> string = "a descriptor dps foo 23 bar fd quux"
>>> patterns = ["dps", "23", "fd"]
>>> reduce(lambda s, pat: s.split(pat, 1)[0], patterns, string)
'a descriptor '
>>> reduce(lambda s, pat: s.split(pat, 1)[0], patterns, "uiopuiopuiopuipouiop")
'uiopuiopuiopuipouiop'
Esto básicamente dice: para cada pat
en patterns
: tomar string
y repetidamente aplicar string.split(pat, 1)[0]
(como se ha explicado anteriormente), operando sobre el resultado del valor devuelto previamente cada vez. Como puede ver, si ninguno de los patrones está en la cadena, la cadena original aún se devuelve.
La respuesta más simple es una rebanada lista/cadena combinada con una string.find
:
>>> s = "a descriptor 23 fd"
>>> s[:s.find("fd")]
'a descriptor 23 '
>>> s[:s.find("23")]
'a descriptor '
>>> s[:s.find("gggfdf")] # <-- look out! last character got cut off
'a descriptor 23 f'
Un mejor enfoque (para evitar cortar el último carácter de un patrón de falta cuando s.find
devuelve -1) podría ser para envolver en una función simple:
>>> def cutoff(string, pattern):
... idx = string.find(pattern)
... return string[:idx if idx != -1 else len(string)]
...
>>> cutoff(s, "23")
'a descriptor '
>>> cutoff(s, "asdfdsafdsa")
'a descriptor 23 fd'
la sintaxis [:s.find(x)]
significa tomar la parte de la cadena desde el índice 0 hasta el derecho-h y lado del colon; y en este caso, el RHS es el resultado de s.find
, que devuelve el índice de la cadena que pasó.
En sus ejemplos, ¿cuáles son los códigos, y lo que debe buscar la salida como? –