strip of 'Geschütztes Leerzeichen'

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
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

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
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.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

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.
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

haha danke euch!
Zap dein beispiel hat mich weit voran gebracht.
Und mit Blackjacks Unicode Suchbegriff hab ich mir dann den Rest zusammen gedeixelt.

Code: Alles auswählen

mystring.replace("\xA0"," ").strip()
Das ist mein aktuelles Ergebnis.

Vielen denk euch beiden
Mit freundlichen und zufriedenen Grüßen
Zack
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dein Code hat aber nix mit unicode zu tun. Der fliegt auf die Nase, wenn du nicht latin1 verwendest.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

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.
Antworten