umwandlung von kyrillischen zeichen in decimalwerte
hallo python liste, ist hier eine kurze vorstellung zur person gewünscht ? wenn ja, dann hole ich es mit der nächsten email nach. :-) ich stehe vor dem problem, dass ich XML nachrichten mit python verarbeite, und in den XML nachrichten strings wie z.b. "оÑ"иÑ," enthalten sind. diese strings muss ich umwandeln in decimal werte wie z.b. "Рек лам" um diese in eine postgres datenbank zu schreiben. dazu habe ich 2 fragen: 1. wie wandele ich werte wie "оÑ"иÑ," in "1056;ек лам" um ? 2. wie funktioniert der umgekehrte weg? vielen dank im voraus. -nico
Nico Grubert wrote:
hallo python liste,
ist hier eine kurze vorstellung zur person gew�nscht ? wenn ja, dann hole ich es mit der n�chsten email nach. :-)
ich stehe vor dem problem, dass ich XML nachrichten mit python verarbeite, und in den XML nachrichten strings wie z.b. "офия," enthalten sind. diese strings muss ich umwandeln in decimal werte wie z.b. "Рек лам" um diese in eine postgres datenbank zu schreiben.
Ich empfehle pyPgSQL (bin Entwickler und darum nicht ganz unvoreingenommen). pyPgSQL kann als einziges Interface mit Unicode-Strings umgehen. Und vom XML-Parser wirst du Unicode bekommen. Mit pyPgSQL k�nntest du die Unicode-Strings transparent verwenden. Frag mal hier nach, wenn du ein Beispiel brauchst.
dazu habe ich 2 fragen: 1. wie wandele ich werte wie "офия," in "1056;ек лам" um ?
Musst du das wirklich so encoden? Warum nicht einfach den String in einer Datenbank abspeichern, die das Backend-Encoding UNICODE oder KOI8-R hat? PostgreSQL unterst�tzt diese und mehr Encodings. Ich denke, irgendwo wird es eine entspr. Hilfsfunktion schon geben, aber das sollte es auch tun: def encode_for_xml(unicode_string): return "".join(["%i;" % ord(item) for item in unicode_string]) Wenn du nach wie vor einen Unicode-String willst, dann einfach return u"".join(...).
2. wie funktioniert der umgekehrte weg?
Abgesehen von wieder selber bauen wird es auch hier eine Hilfsfunktion geben. Kennt die jemand? Martin? -- Gerhard _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
"Nico Grubert"
ich stehe vor dem problem, dass ich XML nachrichten mit python verarbeite, und in den XML nachrichten strings wie z.b. "[unleserlich]" enthalten sind.
Das ist schonmal seltsam. Wie genau verarbeitest Du denn die Nachrichten mit Python? Normalerweise solltest Du Unicode-Strings bekommen, keine Byte-Strings. Falls Du keine der Python-XML-Bibliotheken benutzt, kann es natürlich sein, dass Du tatsächlich Bytestrings bekommst. In diesem Fall musst Du wissen, welche Kodierung diese Bytestrings benutzen (koi8-r, cp1251, utf-8, usw).
1. wie wandele ich werte wie "[unleserlich]" in "1056;ек лам" um ?
Wenn Du die Kodierung kennst, unter Zuhilfenahme von Gerhards encode_for_xml-Funktion: encode_for_xml(unicode(bytestring, russische_kodierung))
2. wie funktioniert der umgekehrte weg?
Zum Beispiel mit einem XML-Parser:
from xml.dom.minidom import parseString doc = parseString("<foo>ек лам</foo>") doc.documentElement.childNodes[0].data.encode("koi8-r")^ '\xc5\xcb \xcc\xc1\xcd'
Ciao, Martin _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
participants (3)
-
Gerhard Häring
-
martin@v.loewis.de
-
Nico Grubert