Seite 1 von 1
strings und item assignment
Verfasst: Freitag 6. Mai 2005, 18:50
von marco_
Code: Alles auswählen
>>>a = "XXXXXXXXXX"
>>>a[3] = "O"
TypeError: object does not support item assignment
Warum? Er unterstützt es doch:
Warum unterstützt er dann kein umändern des Buchstabens, es ist doch ein String und kein Tupel oder ähnliches.
Verfasst: Freitag 6. Mai 2005, 19:11
von mawe
Hi!
Naja, Strings sind halt einfach immutable

Du kannst Deinen String aber einfach in eine List umwandeln:
Jetzt kannst damit machen was Du willst
Gruß, mawe
Verfasst: Samstag 7. Mai 2005, 13:28
von CM
Hoi Marco,
wenn Du ins Tutorial unter "strings" nachschaust (unter 3.2.1 in der aktuellen Doku), dann wird Dein Problem dort genau erklärt.
mawes Vorschlag ist ok, aber dann muß man den Umweg über Listen gehen und ggf. wieder in strings umwandeln. Alternativ kannst Du bei komplexen Strings mit regulären Ausdrücken arbeiten (siehe re Modul) oder Du verpackst folgendes in eine kleine Funktion:
Code: Alles auswählen
a = 'xxxxxxxxxxx'
a = a[:2] + 'X' + a[3:]
print a
xxXxxxxxxxx
Dann mußt Du die Stringebene nicht verlassen.
Gruß,
Christian
Verfasst: Samstag 7. Mai 2005, 14:13
von marco_
Danke für die Anregungen und Tipps, bringt mich wirklich weiter.
@CM: Nur das bei deinem Beispiel der Buchstabe eingefügt wird und nicht ersetzt. Die Länge verändert sich also.
Verfasst: Samstag 7. Mai 2005, 14:46
von joe
marco_ hat geschrieben:
@CM: Nur das bei deinem Beispiel der Buchstabe eingefügt wird und nicht ersetzt. Die Länge verändert sich also.
Du täuschst dich. Zähl nochmal nach

joe
Verfasst: Samstag 7. Mai 2005, 15:25
von Leonidas
Und für die Leute die zum Zählen zu faul sind, also Leute wie mich, gibt es len().
Verfasst: Samstag 7. Mai 2005, 16:02
von marco_
Sorry, war wiedermal mein Fehler. Hab vorher sogar len() benutzt, anscheinend ein Fehler meines Unbewussten bzw. der Verstand...

Verfasst: Samstag 7. Mai 2005, 16:21
von CM
Nein, tut es nicht. Vielleicht hilft das:
Code: Alles auswählen
a = '0123456789'
a = a[:2] + 'X' + a[3:]
print a
01X3456789
Gruß,
Christian
Verfasst: Samstag 7. Mai 2005, 16:22
von CM
Gott, irgendwie war wohl alles bis zu marcos vorletztem Beitrag bei mir im Cache oder so - jedenfalls habe ich alles danach erst gesehen, als ich den letzen Beitrag abgeschickt habe. Komisch ...
Verfasst: Samstag 7. Mai 2005, 17:53
von jens
Oder so:
Code: Alles auswählen
a = '0123456789'
a = list(a)
a[2] = "X"
a = "".join( a )
print a