Pregunta ¿Cómo eliminar todos los caracteres después de un personaje específico en Python?


Tengo una cadena. ¿Cómo elimino todo el texto después de cierto personaje? (En este caso ...)
El texto después de ... cambiar así que es por eso que quiero eliminar todos los caracteres después de una cierta.


75
2018-05-24 21:56


origen


Respuestas:


Divida en su separador como máximo una vez, y tome la primera pieza:

sep = '...'
rest = text.split(sep, 1)[0]

No dijiste lo que debería suceder si el separador no está presente. Tanto esta como la solución de Alex devolverán toda la cadena en ese caso.


137
2018-05-24 22:01



Suponiendo que su separador es '...', pero puede ser cualquier cadena.

text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')

>>> print head
some string

Si el separador no se encuentra, head contendrá toda la cadena original.

La función de partición se agregó en Python 2.5.

dividir(...)       S.partition (sep) -> (head, sep, tail)

Searches for the separator sep in S, and returns the part before it,
the separator itself, and the part after it.  If the separator is not
found, returns S and two empty strings.

59
2018-05-24 22:02



Sin un RE (que supongo que es lo que quieres):

def remafterellipsis(text):
  where_ellipsis = text.find('...')
  if where_ellipsis == -1:
    return text
  return text[:where_ellipsis + 3]

o, con un RE:

import re

def remwithre(text, there=re.compile(re.escape('...')+'.*')):
  return there.sub('', text)

7
2018-05-24 22:00



Si desea eliminar todo después de la última aparición de separador en una cadena, me parece que esto funciona bien:

<separator>.join(string_to_split.split(<separator>)[:-1])

Por ejemplo, si string_to_split es un camino como root/location/child/too_far.exe y solo quieres la ruta de la carpeta, puedes dividir "/".join(string_to_split.split("/")[:-1]) y obtendrás root/location/child


7
2017-09-14 22:18



otra manera fácil de usar re será

import re, clr

text = 'some string... this part will be removed.'

text= re.search(r'(\A.*)\.\.\..+',url,re.DOTALL|re.IGNORECASE).group(1)

// text = some string

0
2018-05-20 10:42