Tengo una cuerda ¿Cómo elimino todo el texto después de cierto carácter? ( En este caso...
)
El texto después ...
cambiará, así que es por eso que quiero eliminar todos los caracteres después de cierto.
Tengo una cuerda ¿Cómo elimino todo el texto después de cierto carácter? ( En este caso...
)
El texto después ...
cambiará, así que es por eso que quiero eliminar todos los caracteres después de cierto.
Respuestas:
Dividir en su separador como máximo una vez, y tomar la primera pieza:
sep = '...'
rest = text.split(sep, 1)[0]
No dijiste lo que debería pasar si el separador no está presente. Tanto esta como la solución de Alex devolverán la cadena completa en ese caso.
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. partición (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.
Si desea eliminar todo después de la última aparición del separador en una cadena, creo que esto funciona bien:
<separator>.join(string_to_split.split(<separator>)[:-1])
Por ejemplo, si string_to_split
es una ruta como root/location/child/too_far.exe
y solo desea la ruta de la carpeta, puede dividir por "/".join(string_to_split.split("/")[:-1])
y obtendrá
root/location/child
Sin un RE (que supongo 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)
El método find devolverá la posición del carácter en una cadena. Luego, si quieres eliminar todo del personaje, haz esto:
mystring = "123⋯567"
mystring[ 0 : mystring.index("⋯")]
>> '123'
Si desea conservar el personaje, agregue 1 a la posición del personaje.
import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'\.\.\..*',"",test)
print(res)
Salida: "Esto es una prueba"
De un archivo:
import re
sep = '...'
with open("requirements.txt") as file_in:
lines = []
for line in file_in:
res = line.split(sep, 1)[0]
print(res)