SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ludique

    Ludique

    21 NİSAN 2009
  • RD

    RD

    19 NİSAN 2006
  • The Pet Collective

    The Pet Coll

    5 Ocak 2012