Sequenz-Operationen in Zeichenketten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

Hallo,

ich habe ein wahrscheinlich sehr einfaches Problem, an dem ich mir aber die Zähne ausbeiße.

Ich möchte in einer Zeichenkette Zeichen unabhängig vom Inhalt ersetzen und dachte, das ginge etwa so:

s[15:20] = "12345"

Leider sind solche "normalen" Sequenz-Operationen mit einer Zeichenkette nicht möglich.
Was kann man da machen?

Danke
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du kannst Zeichenketten nicht verändern. Du musst also eine neue anlegen, etwa so:

Code: Alles auswählen

a = "Test"
a = a[0] + "was neues" + a[1:]
Natürlich ungetestet ;-) Aber ich denke Prinzip sollte klar sein.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Strings sind in Python konstant und nicht veränderbar. Du musst einen neuen String bauen.

Code: Alles auswählen

s = s[:15] + "12345" + s[20:]
Stefan
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Sowas steht auch im Tutorial.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

@RedSharky: mit .replace() kannst du nicht arbeiten?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

Danke für all eure Antworten.

An solche Sachen wie "String neu aufbauen" und replace() hatte ich schon gedacht, aber mir kam das zu sehr nach Holzhammermethode vor. Normalerweise gibt es da doch immer eine elegante/schnelle Lösung. replace() nicht so optimal, weil ich immer erst feststellen muss, was dort steht, um es dann zu ersetzen, obwohl es eigentlich egal ist.
Antworten