[Python-de] XML konforme Strings
Walter Dörwald
walter at livinglogic.de
Mon Jul 12 17:45:42 CEST 2004
Sebastian Moors wrote:
> hi !
> ich suche eine python funktion, die mir die umlaute und andere sonderzeichen
> in einem string in xml konforme entitäten übersetzt. z.b. sollte aus
> "übersetzen" "übersetzen" werden.
> gibt es sowas ?? ich kenne ähnliche funktionen aus php, doch in der python
> libary reference konnte ich nichts finden.
Wenn Du character references verwenden willst, dann kannst Du (mit
Python 2.3) folgendes machen:
print u"übersetzen".encode("ascii", "xmlcharrefreplace")
::: übersetzen
Wenn Du unbedingt entity references haben willst, geht das auch,
und zwar folgendermaßen:
import codecs, htmlentitydefs
def xmlentrefreplace(exc):
if not isinstance(exc, UnicodeEncodeError):
raise TypeError("don't know how to handle %r" % exc)
rep = []
for c in exc.object[exc.start:exc.end]:
try:
rep.append(u"&%s;" % htmlentitydefs.codepoint2name[ord(c)])
except KeyError:
rep.append(u"&#%d;" % ord(c))
return (u"".join(rep), exc.end)
codecs.register_error("xmlentrefreplace", xmlentrefreplace)
print u"übersetzen".encode("ascii", "xmlentrefreplace")
::: übersetzen
Bis demnächst,
Walter Dörwald