Ersetzen eines Zeichens eines Strings in Python

8

Sind in Python Strings veränderbar? Die Zeile someString[3] = "a" löst den Fehler

aus
  

TypeError: 'str' Objekt nicht   Artikelzuordnung unterstützen

Ich kann sehen warum (wie ich hätte schreiben können someString [3]="test" und das wäre natürlich illegal) aber gibt es eine Methode, dies in Python zu tun?

    
Chris 29.01.2010, 21:09
quelle

4 Antworten

13

Python-Strings sind unveränderbar und unterstützen daher keine Element- oder Slice-Zuweisung. Sie müssen eine neue Zeichenfolge erstellen, zum Beispiel mit someString[:3] + 'a' + someString[4:] oder einem anderen geeigneten Ansatz.

    
Håvard S 29.01.2010, 21:14
quelle
8

Anstatt Ihren Wert als String zu speichern, könnten Sie eine Liste von Zeichen verwenden:

%Vor%

Wenn Sie es dann wieder in eine Zeichenfolge konvertieren möchten, um es anzuzeigen, verwenden Sie Folgendes:

%Vor%

Wenn Sie viele Zeichen nacheinander ändern, ist diese Methode wesentlich schneller als das Erstellen einer neuen Zeichenfolge bei jedem Zeichenwechsel.

    
Mark Byers 29.01.2010 21:20
quelle
2

In genügend neuen Pythons können Sie auch den eingebauten bytearray -Typ verwenden, der änderbar ist. Siehe die stdlib-Dokumentation. Aber "neu genug" bedeutet hier 2.6 oder höher, also ist das nicht unbedingt eine Option.

In älteren Pythons musst du ein neues str wie oben erwähnt erstellen, da diese unveränderlich sind. Das ist normalerweise der am besten lesbare Ansatz, aber manchmal ist es sinnvoll, eine andere Art von veränderbarer Sequenz (wie eine Liste von Zeichen oder möglicherweise array.array ) zu verwenden. array.array ist jedoch ein wenig klobig und wird normalerweise vermieden.

    
mzz 29.01.2010 21:24
quelle
1
%Vor%     
JohnMudd 03.10.2014 02:41
quelle

Tags und Links