Fehler in Pythons str.rstrip () - Funktion oder meine eigene Dummheit?

8

Entweder ist das ein Fehler oder ich lerne etwas Neues darüber, wie sich Python verhält. :)

Ich habe ein Wörterbuch mit Schlüssel / Wert-Paaren gefüllt. Jeder Schlüssel hat ein eindeutiges Präfix, ias_XX_XX_ . Ich versuche, eine Liste aller eindeutigen Präfixe im Wörterbuch zu erhalten.

  1. Zuerst erhalte ich eine Liste aller Schlüssel, die in '_x1' enden.
  2. Als nächstes entferne ich '_x1' von allen mit rstrip('_x1' ).

Dies funktioniert für alle, bis auf den letzten, ias_1_1_x1 . Anstatt zu ias_1_1 entfernt zu werden, wird es ias_ . Führen Sie den Code aus, um selbst zu sehen:

%Vor%

Tatsächliche Ausgabe : (Python 2.6, 2.7 und 3.2 (muss print to print () ändern, damit 3.x funktioniert))

%Vor%

Erwartete Ausgabe:

%Vor%

Wenn ich den Namen des Schlüssels von ias_1_1 in etwas wie ias_1_2 oder ias_1_3 ändere, tritt der Glitch nicht auf. Warum passiert das?

    
Dave Gallagher 25.06.2011, 18:17
quelle

6 Antworten

20

Der Parameter für rstrip() ist eine Menge von zu entfernenden Zeichen, keine exakte Zeichenkette:

%Vor%

Allgemeiner Hinweis: Wenn Sie einen Fehler in einer Funktion vermuten, lesen Sie die Dokumentation .

    
Sven Marnach 25.06.2011, 18:19
quelle
5

In den Dokumenten wurde folgende Hervorhebung hinzugefügt:

  

Das chars-Argument ist eine Zeichenfolge, die die Menge der zu entfernenden Zeichen angibt. Wenn sie weggelassen oder None ist, wird das chars-Argument standardmäßig zum Entfernen von Leerzeichen verwendet. Das Zeichen Argument ist kein Suffix ; vielmehr werden alle Kombinationen seiner Werte entfernt.

    
senderle 25.06.2011 18:20
quelle
4
Der Parameter

.rstrip ist nicht die Zeichenfolge, die wir entfernen möchten, sondern die Zeichen, die wir entfernen möchten. Überprüfen Sie diese Beispiele:

%Vor%     
utdemir 25.06.2011 18:22
quelle
3

.rstrip() entfernt alle Kombinationen übereinstimmender Zeichen, nicht die tatsächlich angegebene Zeichenfolge. Siehe Ссылка .

    
Rob Cowie 25.06.2011 18:21
quelle
2

Probieren Sie es stattdessen aus:

%Vor%     
André Laszlo 25.06.2011 18:24
quelle
0

rstrip gibt eine Kopie der Zeichenfolge mit entfernten Zeichen zurück.

Zum Beispiel:

%Vor%

Wenn Sie mit Dateinamen arbeiten, seien Sie besonders vorsichtig,

%Vor%

Hoffe, das hilft!

    
rzskhr 21.05.2017 20:40
quelle

Tags und Links