11 EYLÜL 2008, PERŞEMBE
Unicode Dize XML/HTML Varlıkları dönüştürmek Python
Kazıma ve siteleri sık sık HTML varlıkları olmayan ascıı karakterleri temsil etmek için bazı web yapıyorum. Python HTML varlıkları ve döndürür bir dize unicode türü götüren bir faydası var mı?
Örneğin:
Geri alıyorum:
ǎ
bir "a" sesi ile mark. ǎ temsil eder İkili, bu 16 bit 01ce olarak temsil edilir. Değeri u'\u01ce'
html varlık dönüştürmek istiyorum
CEVAP
12 EYLÜL 2008, Cuma
Python htmlentitydefs modül vardır, ama bu HTML varlıklar unescape için bir işlev içermez.
Fredrik Lundh (elementtree yazarı, diğer şeyler arasında) böyle bir işlevi var geliştirici Python ondalık, onaltılık ve adlandırılmış varlıklar ile çalışan on his website,:
import re, htmlentitydefs
##
# Removes HTML or XML character references and entities from a text string.
#
# @param text The HTML (or XML) source text.
# @return The plain text, as a Unicode string, if necessary.
def unescape(text):
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(htmlentitydefs.name2codepoint[text[1:-1]])
except KeyError:
pass
return text # leave as is
return re.sub("&#?\w ;", fixup, text)
Bunu Paylaş:
Python (ekstra semboller içeren bir di...
Nasıl dize Python küçük harfe dönüştür...
Python bir dize bayt dönüştürmek...
Python string olarak HTML varlıkları ç...
En iyi Python 3 bayt dize dönüştürmek ...