Chars in String entfernen

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
Caldar
User
Beiträge: 46
Registriert: Sonntag 17. Mai 2009, 18:20

Ich habe einen String, der folgendermaßen aussieht:

"test (x)", "test(y)", test(z),",
Die Anführungszeichen müssen ja escaped werden, daher machte ich folgendes daraus:

Code: Alles auswählen

s = "\"test (x)\", \"test(y)\", \"test(z)\""
Ich will nun folgendes machen:
1. die Anführungszeichen loswerden. Probiert habe ich

Code: Alles auswählen

string.replace("\"", "")
Ausgabe:
"test (x)", "test(y)", "test(z)"
Hat sich also nichts geändert.

Das andere Problem ist, dass ich das letzte Komma im String entfernen will (und nur dieses).

Kann mir jemand mit dem Problem weiterhelfen?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also bei mir geht's:

Code: Alles auswählen

In [13]: s = "\"test (x)\", \"test(y)\", \"test(z)\""

In [14]: s.replace('"','')
Out[14]: 'test (x), test(y), test(z)'

In [15]: s.replace("\"","")
Out[15]: 'test (x), test(y), test(z)'
Du könntest den String bei jedem Komma aufsplitten und dann die Teile wieder zusammensetzen, wobei Du dann beim vorletzten das letzte Zeichen (eben das Komma) außen vor lässt.
Caldar
User
Beiträge: 46
Registriert: Sonntag 17. Mai 2009, 18:20

OKay, Problem 1 hat sich erübrigt. Ich war so gescheit und vergaß den Zuweisungsoperator:
also ich schrieb:

Code: Alles auswählen

string.replace("\"", "")
statt

Code: Alles auswählen

str = string.replace("\"", "")
Aber Problem 2 mit dem letzten Komma entfernen ist (für mich) immer noch nicht ganz trivial - respektive gelöst :)

@Hyperion:
Danke erstmal für den Tipp mit dem Komma, werde ich gleich mal dran herummachen...
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Erm es gibt in Python mehrere Arten von Quotationmarks. Wenn du doppelte im String hast, musst du nur einfacher nehmen um den String als String-Literal zu kennzeichnen.

Für Problem 2 sollte `s.rstrip(",")` reichen.

Btw: Die meisten Funktionen aus `string` sind deprecated, da sie auch als String-Methoden existieren (siehe Hyperion).
Caldar
User
Beiträge: 46
Registriert: Sonntag 17. Mai 2009, 18:20

cofi hat geschrieben:Erm es gibt in Python mehrere Arten von Quotationmarks. Wenn du doppelte im String hast, musst du nur einfacher nehmen um den String als String-Literal zu kennzeichnen.
Danke, good to know.
cofi hat geschrieben:Für Problem 2 sollte `s.rstrip(",")` reichen.
Okay, danke, gespeichert :)
cofi hat geschrieben:Btw: Die meisten Funktionen aus `string` sind deprecated, da sie auch als String-Methoden existieren (siehe Hyperion).
string war bei mir der (etwas unglücklich gewählte) Variablenname für den Beispielstring, also:

Code: Alles auswählen

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

cofi hat geschrieben:Für Problem 2 sollte `s.rstrip(",")` reichen.
Klappt bei mir nicht - dabei geht es doch nur um die letzten zeichen eines Strings. Das komma hier befindet sich aber im Innern.
Caldar hat geschrieben: string war bei mir der (etwas unglücklich gewählte) Variablenname für den Beispielstring, also:

Code: Alles auswählen

string = "abcde"
Wobei "str" auch nicht besser ist, überschreibt es doch eine Built-In Funktion ;-)
BlackJack

Man könnte das letzte Komme mit der `rindex()`-Methode suchen und dann per "slicing" eine Zeichenkette ohne das Komma basteln.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Hyperion hat geschrieben:Klappt bei mir nicht - dabei geht es doch nur um die letzten zeichen eines Strings. Das komma hier befindet sich aber im Innern
Hm hast recht, da hab ich mich verlesen. Ich hatte mit letztem Komma ein "trailing" assoziiert ;)
scrippi
User
Beiträge: 31
Registriert: Montag 6. April 2009, 10:37

das problem ist nich schwer zu lösen wenn du weisst das das komma das lezte zeichen ist

Code: Alles auswählen

s = "abcd"

print s[:-1]
Ausgabe: "abc"

und so kannst du das komma entfernen ;)
yantur_v_b
User
Beiträge: 17
Registriert: Montag 25. Mai 2009, 10:32

scrippi hat geschrieben:das problem ist nich schwer zu lösen wenn du weisst das das komma das lezte zeichen ist
Aber bekanntlich ist das Komma im Innern.
Antworten