Seite 1 von 1

Chars in String entfernen

Verfasst: Sonntag 31. Mai 2009, 13:20
von Caldar
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?

Verfasst: Sonntag 31. Mai 2009, 13:38
von Hyperion
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.

Verfasst: Sonntag 31. Mai 2009, 13:38
von Caldar
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...

Verfasst: Sonntag 31. Mai 2009, 13:41
von cofi
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).

Verfasst: Sonntag 31. Mai 2009, 13:54
von Caldar
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"

Verfasst: Sonntag 31. Mai 2009, 13:57
von Hyperion
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 ;-)

Verfasst: Sonntag 31. Mai 2009, 14:48
von BlackJack
Man könnte das letzte Komme mit der `rindex()`-Methode suchen und dann per "slicing" eine Zeichenkette ohne das Komma basteln.

Verfasst: Sonntag 31. Mai 2009, 18:04
von cofi
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 ;)

Verfasst: Sonntag 31. Mai 2009, 23:11
von scrippi
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 ;)

Verfasst: Montag 1. Juni 2009, 11:01
von yantur_v_b
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.