• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

descodificação de html, não percebo bem o código

7 mensagens neste tópico

Tenho este código aqui que há tempos usei, se não me engano server para descodificar html.

Mas não estou a perceber bem o que isto faz...

para começar... porque é que vai ver aos tres primeiros elementos do texto se são "&#x"?

Tambem estou a ter dificuldade em encontrar documentação sobre a funcção group.

Alguem me explica este código?

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o que é que o código faz? :P Pelo nome retira as sequências de escape de uma página (X)HTML certo? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me leves a mal, mas se eu soubesse o que o código fazia e como fazia não  perguntava aqui :P

O problema é que usei isto num script que escrevi há tempos, e agora não me lembro ao certo o que isto fazia.

Acho que isto é para codificar ou descodificar entidades... já nao me lembro, por isso é que perguntei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me leves a mal, mas se eu soubesse o que o código fazia e como fazia não  perguntava aqui ;)

O problema é que usei isto num script que escrevi há tempos, e agora não me lembro ao certo o que isto fazia.

Acho que isto é para codificar ou descodificar entidades... já nao me lembro, por isso é que perguntei.

Percebi é que estavas em dúvida de como fazia e não o que fazia... :P

Vou tentar descodificar isto então...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho estado a tentar perceber o código, parece que o .group é um método do módulo re que te diz os matches que ocorrerão na comparação de uma determinada expressão regular.

Já agora, aqui fica o código completo:

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Basicamente aqueles 3 primeiros caracteres e para saber se é UFT8 (unicode) ou ASCII.

Ele depois vai substituir pelos códigos HTML.

Simples :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora