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

  • Autocar

    Autocar

    11 Mart 2006
  • Facebook Developers

    Facebook Dev

    24 ŞUBAT 2009
  • Skrillex

    Skrillex

    6 NİSAN 2010