Ich habe eine Reihe von Zeichenfolgen set1
, und alle Zeichenfolgen in set1
haben zwei spezifische Teilzeichenfolgen, die ich nicht benötige und entfernen möchte.
Beispiel-Eingabe:
set1={'Apple.good','Orange.good','Pear.bad','Pear.good','Banana.bad','Potato.bad'}
Im Grunde möchte ich, dass die .good
und .bad
Teilzeichenfolgen aus allen Zeichenfolgen entfernt werden.
Was ich versucht habe:
for x in set1:
x.replace('.good','')
x.replace('.bad','')
Aber das scheint überhaupt nicht zu funktionieren. Es gibt absolut keine Änderung in der Ausgabe und es ist die gleiche wie die Eingabe. Ich habe versucht, for x in list(set1)
anstelle des Originals zu verwenden, aber das ändert nichts.
quelle
string.replace()
ist auf Python 3.x veraltet, jetzt ist esstr.replace()
.replace
nicht ändert die Zeichenfolge, gibt es eine Kopie der Zeichenfolge mit dem Ersatz. Sie können die Zeichenfolge nicht direkt ändern, da Zeichenfolgen unveränderlich sind.Sie müssen die Rückgabewerte von übernehmen
x.replace
und in einen neuen Satz einfügen.quelle
Alles was du brauchst ist ein bisschen schwarze Magie!
quelle
Sie könnten dies tun:
quelle
x.replace('.good',' ')
undx.replace('.bad',' ')
macht nichts mit dem Endergebnis. Der Ausdruck ist ohne sie gleich.re.sub
:x = re.sub('((\.good$)|(\.bad$))', '', x)
replace
s und verschieben Sie alles auf einenre.sub
Anruf)Ich habe den Test durchgeführt (aber es ist nicht Ihr Beispiel) und die Daten geben sie nicht ordnungsgemäß oder vollständig zurück
Ich habe bewiesen, dass dies funktioniert:
oder
quelle
Wenn mehrere Teilzeichenfolgen entfernt werden müssen, besteht eine einfache und effektive Option darin,
re.sub
ein kompiliertes Muster zu verwenden, bei dem alle zu entfernenden Teilzeichenfolgen mithilfe der Regex OR (|
) -Pipe verbunden werden.quelle
Wenn Liste
Ich habe etwas für eine Liste getan, die aus einer Reihe von Zeichenfolgen besteht, und Sie möchten alle Zeilen entfernen, die eine bestimmte Teilzeichenfolge haben. Sie können dies tun
Wo
sub
ist ein Muster, das Sie nicht in einer Liste von Zeilen haben möchtenLinSplitUnOr
beispielsweise
Dann
A
wird es seinquelle
Wenn Sie etwas aus der Liste löschen, können Sie Folgendes verwenden: (Bei der Methode wird zwischen Groß- und Kleinschreibung unterschieden.)
quelle