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.
Ich komm mal gleich zur Sache
Ich verwende python3.1 um per urllib.request.urlopen den quelltext einer Internetseite einzulesen und mir daraus Informationen zu ziehen. Leider sind aber manche "ungewöhnlichen" Buchstaben durch einen Art Hex string dargestellt. Z.B. "'" für " ' ". str.decode() geht ja in 3.1 nicht mehr deswegen meine Frage wie ich solche Buchstaben wieder umwandle und wie ihr das am besten lösen würdet?
Vielen Dank für Eure Hilfe!!!
MfG
Zuletzt geändert von dragoon am Sonntag 11. April 2010, 18:13, insgesamt 1-mal geändert.
Das Programm wirft allerdings eine Ausnahme. Ich würde hier - wie in so vielen Fällen - nach Trial & Error vorgehen, anstatt auf bestimmte Voraussetzungen zu prüfen. Die relevanten Zeilen lauten dann:
@snafu: du hast Recht
Ich hab den Import von sys, und das prüfen mit sys.version_info, aus einem anderen Code, weil ich dort noch viel mehr importiere (urllib, etc.) und da ist es dann nötig mit sys die Version zu überprüfen
import re
try:
from htmlentitydefs import name2codepoint
except ImportError:
from html.entities import name2codepoint
unichr = chr
def unescape(text):
"""Removes HTML or XML character references
and entities from a text string.
keep &, >, < in the source code.
from Fredrik Lundh
http://effbot.org/zone/re-sub.htm#unescape-html
"""
def fixup(m):
text = m.group(0)
if text[:2] == "&#":
# character reference
try:
if text[:3] == "&#x":
return unichr(int(text[3:-1], 16))
else:
return unichr(int(text[2:-1]))
except ValueError:
pass
else:
# named entity
try:
text = unichr(name2codepoint[text[1:-1]])
except KeyError:
pass
return text # leave as is
return re.sub("&#?\w+;", fixup, text)
if __name__ == '__main__':
print(unescape("Exposé"))