Frage Wie entferne ich alle Zeichen nach einem bestimmten Zeichen in Python?


Ich habe eine Schnur. Wie entferne ich den gesamten Text nach einem bestimmten Zeichen? (In diesem Fall ...)
Der Text nach dem Willen ... ändere ich deswegen ich möchte alle Charaktere nach einem bestimmten entfernen.


75
2018-05-24 21:56


Ursprung


Antworten:


Split auf Ihrem Trennzeichen höchstens einmal, und nehmen Sie das erste Stück:

sep = '...'
rest = text.split(sep, 1)[0]

Sie haben nicht gesagt, was passieren soll, wenn der Separator nicht vorhanden ist. Sowohl diese als auch Alex 'Lösung wird in diesem Fall die gesamte Zeichenfolge zurückgeben.


137
2018-05-24 22:01



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 Zeichenfolge.

Die Partitionsfunktion wurde in Python 2.5 hinzugefügt.

Partition (...)       S.partition (sep) -> (Kopf, sep, Schwanz)

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.

59
2018-05-24 22:02



Ohne eine RE (die ich vermute, was du willst):

def remafterellipsis(text):
  where_ellipsis = text.find('...')
  if where_ellipsis == -1:
    return text
  return text[:where_ellipsis + 3]

oder mit einem RE:

import re

def remwithre(text, there=re.compile(re.escape('...')+'.*')):
  return there.sub('', text)

7
2018-05-24 22:00



Wenn Sie alles nach dem letzten Auftreten von Trennzeichen in einem String entfernen wollen, funktioniert das 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 du willst nur den Ordnerpfad, mit dem du teilen kannst "/".join(string_to_split.split("/")[:-1]) und du wirst es bekommen root/location/child


7
2017-09-14 22:18



Ein weiterer einfacher Weg mit re wird sein

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

0
2018-05-20 10:42