Ho una corda Come rimuovo tutto il testo dopo un certo carattere? ( In questo caso...
)
Il testo dopo ...
cambierà, quindi è per questo che voglio rimuovere tutti i caratteri dopo un certo.
Ho una corda Come rimuovo tutto il testo dopo un certo carattere? ( In questo caso...
)
Il testo dopo ...
cambierà, quindi è per questo che voglio rimuovere tutti i caratteri dopo un certo.
Risposte:
Dividi il separatore al massimo una volta e prendi il primo pezzo:
sep = '...'
rest = text.split(sep, 1)[0]
Non hai detto cosa dovrebbe succedere se il separatore non è presente. Sia questa che la soluzione di Alex restituiranno l'intera stringa in quel caso.
Supponendo che il tuo separatore sia '...', ma può essere qualsiasi stringa.
text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')
>>> print head
some string
Se il separatore non viene trovato, head
conterrà tutta la stringa originale.
La funzione di partizione è stata aggiunta in Python 2.5.
partizione (...) S.partizione (sep) -> (testa, sep, coda)
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.
Se vuoi rimuovere tutto dopo l'ultima occorrenza del separatore in una stringa trovo che funzioni bene:
<separator>.join(string_to_split.split(<separator>)[:-1])
Ad esempio, se string_to_split
è un percorso simile root/location/child/too_far.exe
e vuoi solo il percorso della cartella, puoi dividerlo "/".join(string_to_split.split("/")[:-1])
e otterrai
root/location/child
Senza un RE (che presumo sia quello che vuoi):
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)
Il metodo find restituirà la posizione del carattere in una stringa. Quindi, se vuoi rimuovere ogni cosa dal personaggio, fai questo:
mystring = "123⋯567"
mystring[ 0 : mystring.index("⋯")]
>> '123'
Se vuoi mantenere il personaggio, aggiungi 1 alla posizione del personaggio.
import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'\.\.\..*',"",test)
print(res)
Output: "Questo è un test"
Da un file:
import re
sep = '...'
with open("requirements.txt") as file_in:
lines = []
for line in file_in:
res = line.split(sep, 1)[0]
print(res)