2016-05-19 12 views
2

Ich habe eine Liste, in der einige Zeichenfolgen mit einem bestimmten Zeichen enden. Jetzt muss ich dieses Zeichen aus diesen Zeichenfolgen entfernen.Ersetzen eines Zeichens in einem Element der String-Liste

sagen: ['abc-','xyz','jkl-']

Ergebnis ['abc','xyz','jkl']

sein sollte Was ich versuche, ist: wie gut

>>>List.append([s.replace('- ',' ')[:-1] for s in List ]) 

Aber es entfernt das letzte Zeichen aus anderen Saiten.

+4

's.rstrip („-“) 'Prehaps? Und wenn Sie ".append" es auflisten, ersetzen Sie nicht die Elemente in der ursprünglichen Liste, Sie müßten 'List [:] = [s.rstrip (" - ") für s in List]' zum Überschreiben der Inhalt der Liste. –

+2

Warum ersetzen Sie mit einem Leerzeichen? –

+0

Was sollte mit '['abc -']' geschehen: erwarten Sie '['abc']' oder '['abc -']'? I.e. ist das letzte Sonderzeichen, oder möchten Sie möglicherweise mehrere abschließende Zeichen entfernen? –

Antwort

2

Sie versuchen, zu replace mit '- ', Ihr Zeichen, gefolgt von einem Leerzeichen Zeichen übereinstimmen. Es gibt keine Leerzeichen in den Strings, daher ersetzt das Ersetzen nichts, und dann schneidet man nur das letzte Zeichen aller Strings ab. Außerdem macht es keinen Sinn, ein Leerzeichen hinzuzufügen und es dann abzuschneiden, und Ihre aktuelle Methode würde Ihr Zeichen an anderer Stelle in Ihrer Zeichenfolge nicht berücksichtigen, zum Beispiel two-putt.

Entfernen Sie einfach die Scheibe und verwenden Sie rstrip, um das nachfolgende Zeichen zu entfernen, das Sie nicht möchten.

>>> l=['abc-','xyz','jkl-'] 
>>> l[:]= [x.rstrip('-') for x in orig] 
['abc', 'xyz', 'jkl'] 

Sie können ein Listenverständnis verwenden, um eine neue Liste zu erstellen und dann den Inhalt Ihres Originals zu überschreiben. Beachten Sie, dass bei dieser Methode, wenn Ihre Strings mit mehreren Zeichen enden, die Sie nicht möchten, sie zum Beispiel alle entfernt werden. 'dogs---' wird werden. Wenn Sie auch nachfolgende Leerzeichen behandeln möchten, können Sie ein Leerzeichen zusammen mit dem Zeichen, das nicht rstrip sein soll, mit .rstrip('- ') ergänzen.

0

Sie können eine Liste Verständnis benutzen, die jedes Element in der Liste und für jedes Element betrachtet wird, alle aber das letzte Zeichen, wenn das letzte Zeichen ein dash:

>>> List = ['abc-', 'xyz', 'jlk-'] 
>>> [x[:-1] if x.endswith('-') else x for x in List] 
['abc', 'xyz', 'jlk'] 
Verwandte Themen