Seite 1 von 1
strip of 'Geschütztes Leerzeichen'
Verfasst: Freitag 30. Mai 2008, 10:35
von Zack
Hi,
ich hab hier ein kleines Problemchen mit einem Zeichensatz in meinem String.
Habe einen String der mit 'nem laut wiki
Geschütztes Leerzeichen versehen ist.
Mit Python bekomme ich den nicht gestriped.
Und einfach .strip('Geschütztes Leerzeichen') hat leider auch nicht geklappt.
Ich hoffe ihr könnt mir dabei weiterhelfen.
Mit freundlichem Gruß
Zack
Verfasst: Freitag 30. Mai 2008, 10:40
von BlackJack
Nun Du musst wissen wie Dein geschütztes Leerzeichen kodiert ist. Am besten Du arbeitest mit Unicode, denn `strip()` funktioniert nicht wie gewünscht wenn das entsprechende Zeichen mit mehr als einem Byte kodiert wird.
Verfasst: Freitag 30. Mai 2008, 12:01
von Zap
Wenn du mit "geschütztes Zeichen" die HTML Darstellung
meinst, dann würde ich das mit einem replace machen.
Code: Alles auswählen
In [23]: " Foo Bar".replace(" "," ").strip()
Out[23]: 'Foo Bar'
Vielleicht gibt es auch Module die alle HTML Sondercodes entsprechend interpretieren können.
Hab mich aber bisher noch nicht nach sowas umgesehen.
Verfasst: Freitag 30. Mai 2008, 13:08
von Zack
haha danke euch!
Zap dein beispiel hat mich weit voran gebracht.
Und mit Blackjacks Unicode Suchbegriff hab ich mir dann den Rest zusammen gedeixelt.
Das ist mein aktuelles Ergebnis.
Vielen denk euch beiden
Mit freundlichen und zufriedenen Grüßen
Zack
Verfasst: Freitag 30. Mai 2008, 14:53
von mitsuhiko
Dein Code hat aber nix mit unicode zu tun. Der fliegt auf die Nase, wenn du nicht latin1 verwendest.
Verfasst: Freitag 30. Mai 2008, 15:37
von keppla
Das ist mein aktuelles Ergebnis.
Wie mitsuhiko schon sagt, ist es suboptimal, und du musst auch gar nicht suchen und ersetzen, strip funktioniert auch mit geschützten Leerzeichen.
Das Problem ist, dass dein String kein Unicodestring ist, und somit nur eine Folge Bytes, bei denen nicht jedes byte eindeutig einem Zeichen zuzuordnen ist (du kennst die ganzen umlautfehler im Internet).
wandele deinen String in unicode um: (encoding latin1 hab ich geraten)
Code: Alles auswählen
myunicode = mystring.decode('latin1')
print myunicode
print myunicode.strip()
Die Umwandlung solltest du auch am besten nicht erst zweckgebunden vorm Strip machen, sondern da, wo die Daten dein System betreten, so dass du nur noch unicode im System hast.