hallo leute,
wie kann ich unicodezeichen, die in einem string (utf-8 codiert) als escapesequenzen auftauchen, durch ihr jeweiliges zeichen ersetzen, zb. so:
string: u"xyz\\u00a0"
bzw. ausgabe: xyz\u00a0
wobei \u00a0 = leerzeichen
soll werden zu: u"xyz "
danke für eure antworten!
unicodesonderzeichen im text
Code: Alles auswählen
print u"xyz\u00a0".encode('utf-8')
Code: Alles auswählen
In [9]: u"xyz\\u00a0".decode('unicode-escape')
Out[9]: u'xyz\xa0'
@tordmor: Das ist *ein* mögliches Leerzeichen. Es gibt verschiedene.
Das von vorlautboy ist also eines an dem der Text nicht umgebrochen werden soll. Praktisch, wenn man zum Beispiel Text wie `ca. 5 Uhr` hat, was extrem blöd aussieht, wenn die drei "Worte" durch einen Zeilenumbruch auseinander gerissen werden.
Hier sind noch ein paar andere Leerzeichen:
u' ' SPACE
u'\xa0' NO-BREAK SPACE
u'\u1680' OGHAM SPACE MARK
u'\u180e' MONGOLIAN VOWEL SEPARATOR
u'\u2000' EN QUAD
u'\u2001' EM QUAD
u'\u2002' EN SPACE
u'\u2003' EM SPACE
u'\u2004' THREE-PER-EM SPACE
u'\u2005' FOUR-PER-EM SPACE
u'\u2006' SIX-PER-EM SPACE
u'\u2007' FIGURE SPACE
u'\u2008' PUNCTUATION SPACE
u'\u2009' THIN SPACE
u'\u200a' HAIR SPACE
u'\u202f' NARROW NO-BREAK SPACE
u'\u205f' MEDIUM MATHEMATICAL SPACE
u'\u3000' IDEOGRAPHIC SPACE
Code: Alles auswählen
In [11]: unicodedata.name(u'\xa0')
Out[11]: 'NO-BREAK SPACE'
Hier sind noch ein paar andere Leerzeichen:
u' ' SPACE
u'\xa0' NO-BREAK SPACE
u'\u1680' OGHAM SPACE MARK
u'\u180e' MONGOLIAN VOWEL SEPARATOR
u'\u2000' EN QUAD
u'\u2001' EM QUAD
u'\u2002' EN SPACE
u'\u2003' EM SPACE
u'\u2004' THREE-PER-EM SPACE
u'\u2005' FOUR-PER-EM SPACE
u'\u2006' SIX-PER-EM SPACE
u'\u2007' FIGURE SPACE
u'\u2008' PUNCTUATION SPACE
u'\u2009' THIN SPACE
u'\u200a' HAIR SPACE
u'\u202f' NARROW NO-BREAK SPACE
u'\u205f' MEDIUM MATHEMATICAL SPACE
u'\u3000' IDEOGRAPHIC SPACE
-
- User
- Beiträge: 38
- Registriert: Sonntag 7. Dezember 2008, 18:43
mir fällt gerade auf: ich habe unicodezeichen und unicodeescapezeichen als strings gemischt im text, also z.b. "Π\00a0", ich glaube da funktioniert die oben genannte methode nicht, oder? kann man da trotzdem was machen? bin übrigens mittlerweile bin ich auf python3 umgestiegen.BlackJack hat geschrieben:Code: Alles auswählen
In [9]: u"xyz\\u00a0".decode('unicode-escape') Out[9]: u'xyz\xa0'
Was *genau* meinst Du mit "Π\00a0"!? Bitte die `repr()`-Form. Ansonsten: schon ausprobiert?
-
- User
- Beiträge: 38
- Registriert: Sonntag 7. Dezember 2008, 18:43
war ein schlechtes beispiel. ich hatte nur gemeint, dass ich unicodezeichen sowohl als direkte zeichen, als auch als escapesequenzen in stringform im text habe. erstere werden bei S.encode("unicode-escape") zu b"\\uhhhh", letztere zu b"\\\\uhhhh". habe die bytes jetzt aber in ein bytearray kopiert und alle b"\\\\u" durch b"\\u" ersetzt und danach wieder in str umgewandelt (encoding wieder "unicode-escape"). code sieht zwar nicht gut aus, funktioniert aberBlackJack hat geschrieben:Was *genau* meinst Du mit "Π\00a0"!?