242 Stimmen

Wie entfernt man alle Zeichen nach einem bestimmten Zeichen in Python?

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.

405voto

Ned Batchelder Punkte 342778

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.

140voto

Ayman Hourieh Punkte 122012

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.

34voto

theannouncer Punkte 1041

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

11voto

Alex Martelli Punkte 805329

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)

6voto

Marcus Punkte 69
import re
test = "This is a test...we should not be able to see this"
res = re.sub(r'\.\.\..*',"",test)
print(res)

Ausgabe: "Dies ist ein Test"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X