Ich habe eine Zeichenfolge. Wie kann ich den gesamten Text nach einem bestimmten Zeichen entfernen? ( In diesem Fall ...
)
Der folgende Text wird ...
ändern, deshalb möchte ich alle Zeichen nach einem bestimmten Zeichen entfernen.
Antworten
Zu viele Anzeigen?Teilen Sie Ihren Separator höchstens einmal, und nehmen Sie das erste Stück:
sep = '...'
stripped = text.split(sep, 1)[0]
Sie haben nicht gesagt, was passieren soll, wenn der Separator nicht vorhanden ist. Sowohl dies als auch Alex' Lösung wird in diesem Fall die gesamte Zeichenkette zurückgegeben.
Angenommen, Ihr Trennzeichen ist '...', aber es kann eine beliebige Zeichenfolge sein.
text = 'some string... this part will be removed.'
head, sep, tail = text.partition('...')
>>> print head
some string
Wenn das Trennzeichen nicht gefunden wird, head
enthält die gesamte ursprüngliche Zeichenkette.
El Trennwand Funktion wurde in Python 2.5 hinzugefügt.
S.partition(sep)
->(head, sep, tail)
Suche nach dem Trennzeichen sep sur S und gibt den Teil davor zurück, das Trennzeichen selbst und den Teil nach dem Trennzeichen. Wenn das Trennzeichen nicht gefunden, wird S und zwei leere Zeichenfolgen.
Wenn Sie alles nach dem letzten Vorkommen des Trennzeichens in einer Zeichenkette entfernen möchten, funktioniert dies gut:
<separator>.join(string_to_split.split(<separator>)[:-1])
Zum Beispiel, wenn string_to_split
ist ein Pfad wie root/location/child/too_far.exe
und Sie wollen nur den Ordnerpfad, können Sie durch "/".join(string_to_split.split("/")[:-1])
und Sie erhalten root/location/child
Ohne einen regulären Ausdruck (ich nehme an, das ist das, was Sie wollen):
def remafterellipsis(text):
where_ellipsis = text.find('...')
if where_ellipsis == -1:
return text
return text[:where_ellipsis + 3]
oder mit einem regulären Ausdruck:
import re
def remwithre(text, there=re.compile(re.escape('...')+'.*')):
return there.sub('', text)
- See previous answers
- Weitere Antworten anzeigen