Tengo una cadena. ¿Cómo elimino todo el texto después de cierto personaje? (En este caso ...
)
El texto después del cambio de voluntad ...
así que es por eso que quiero para eliminar todos los caracteres después de un cierto uno.¿Cómo eliminar todos los caracteres después de un personaje específico en python?
Respuesta
Split, en el separador de como máximo una vez, y tomar la primera pieza :
sep = '...'
rest = text.split(sep, 1)[0]
No dijo 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.
La solicitud es "eliminar todo el texto después" del separador, no "obtener" ese texto, por lo que creo que desea [0], no [-1], en su solución por lo demás excelente. –
Funcionó perfectamente gracias, como estoy seguro que Ayman y Alex también lo hicieron, así que gracias a todos. – Solihull
Use rsplit() si necesita dividir por un carácter empezando desde el final de la cadena. – Samuel
Sin RE (que supongo es lo que desea):
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)
Podría usar sep = '...' como kwarg y usar len (sep) en lugar de hard-coding the 3 para hacerlo un poco más a prueba de futuro. – cdleary
Sí, pero luego necesita recompilar el RE en cada llamada, por lo que el rendimiento se resiente de la solución RE (no hay una diferencia real para la solución no RE). Algunas generalidades son gratuitas, otras no ... ;-) –
@Alex - ¡Gracias por probar las soluciones! –
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 no se encuentra el separador, head
contendrá toda la cadena original.
La función de partición se agregó en Python 2.5.
partición (...) S.partition (sep) -> (cabeza, sep, cola)
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.
Otra solución excelente - ¿Estamos violando TOOOWTDI? -) Tal vez vale la pena correr un tiempo para comprobar ... –
.partition wins - 0.756 usec por ciclo, vs 1.13 para .split (el formato de comentario no me permite mostrar las pruebas exactas, pero estoy usando el texto y el separador de @ Ayman) - entonces, +1 para @ Ayman's ¡responder! –
y por cierto, para completar, la solución basada en RE es de 2.54 usec, es decir, mucho más lenta que la de @Alyman o @Ned. –
otra manera fácil utilizando volver habrá
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
Si desea eliminar todo después de la última aparición del 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 sólo desea la ruta de la carpeta, se puede dividir por "/".join(string_to_split.split("/")[:-1])
y obtendrá root/location/child
Además, puede cambiar ese -1 a cualquier índice para que sea la ocurrencia en la que se suelta el texto. – theannouncer
- 1. Eliminar todos los caracteres después del signo $ usando Javascript
- 2. ¿Cómo saltar a un personaje específico en vim?
- 3. Cómo eliminar todos los caracteres de una cadena
- 4. Eliminar todos los caracteres especiales de una cadena en R?
- 5. En Python 2.4, ¿cómo puedo quitar los caracteres después de ';'?
- 6. Cómo eliminar todos los números después del punto en PHP
- 7. Eliminar todos los archivos en un directorio con Python
- 8. preg_replace para eliminar los caracteres no imprimibles parece eliminar todos los caracteres extraños
- 9. Eliminar todos los caracteres no ASCII de la cadena
- 10. PHP eliminar todos los caracteres antes de cadena específica
- 11. MySQL Eliminar primeros dos caracteres de todos los campos
- 12. ¿Cómo puedo eliminar todo el texto después de un personaje en bash?
- 13. Regex para eliminar todos los caracteres especiales de la cadena?
- 14. Eliminar todos los caracteres no alfanuméricos mediante preg_replace
- 15. Eliminar todos los elementos después de cierto elemento
- 16. Valor ASCII de un personaje en Python
- 17. ¿Cómo obtener todos los NSRange de un personaje en particular en un NSString?
- 18. Cómo generar todos los caracteres en el conjunto de caracteres UTF-8 en .net
- 19. Eliminar todos los caracteres latinos exclusivos utilizando regex
- 20. Eliminar caracteres después de la cadena?
- 21. Eliminar todos los "caracteres de palabra" no de una cadena en Java, dejando caracteres acentuados?
- 22. Eliminar todos los caracteres excepto los alfabetos y los números de una cadena de Ruby
- 23. ¿Cómo excluir un personaje de un grupo regex?
- 24. Matlab: cómo reemplazar todos los caracteres especiales en un vector?
- 25. Cómo reemplazar todos los caracteres en una cadena usando JavaScript para este caso específico: reemplazar. por
- 26. ¿Cómo eliminar todos los componentes de un JFrame en Java?
- 27. emacs: abra todos los archivos .txt en un directorio específico en un modo principal específico
- 28. ¿Cómo puedo determinar un carácter Unicode desde su nombre en Python, incluso si ese personaje es un personaje de control?
- 29. ¿Cómo selecciono todos los anclajes con un href específico?
- 30. ¿Cómo lograr que todos los usuarios desempeñen un papel específico?
Si no está seguro de que tiene sentido, luego actualice su pregunta para brindar ejemplos específicos de lo que desea hacer. –