que tienen una cadena de símbolos como este:¿Cómo liberar apóstrofes y tal en Python?
'
Eso es al parecer un apóstrofe.
me trataron saxutils.unescape() sin ninguna suerte e intentó urllib.unquote()
¿Cómo puedo descifrar esto? ¡Gracias!
que tienen una cadena de símbolos como este:¿Cómo liberar apóstrofes y tal en Python?
'
Eso es al parecer un apóstrofe.
me trataron saxutils.unescape() sin ninguna suerte e intentó urllib.unquote()
¿Cómo puedo descifrar esto? ¡Gracias!
Salida this question. Lo que estás buscando es "decodificación de entidades html". Normalmente, encontrará una función llamada algo así como "htmldecode" que hará lo que quiera. Tanto Django como Cheetah proporcionan funciones como BeautifulSoup.
La otra respuesta funcionará genial si no desea utilizar una biblioteca y todas las entidades son numéricas.
no estoy seguro sobre el & o el #, pero aquí hay un código para la decodificación:
>>>chr(39)
"'"
>>>ord("'")
39
La solución más robusta parece ser this function por la luminaria de Python Fredrik Lundh. No es la solución más corta, pero maneja entidades con nombre, así como códigos hexadecimales y decimales.
Prueba esto: (encontrado here)
from htmlentitydefs import name2codepoint as n2cp
import re
def decode_htmlentities(string):
"""
Decode HTML entities–hex, decimal, or named–in a string
@see http://snippets.dzone.com/posts/show/4569
>>> u = u'E tu vivrai nel terrore - L'aldilà (1981)'
>>> print decode_htmlentities(u).encode('UTF-8')
E tu vivrai nel terrore - L'aldilà (1981)
>>> print decode_htmlentities("l'eau")
l'eau
>>> print decode_htmlentities("foo < bar")
foo < bar
"""
def substitute_entity(match):
ent = match.group(3)
if match.group(1) == "#":
# decoding by number
if match.group(2) == '':
# number is in decimal
return unichr(int(ent))
elif match.group(2) == 'x':
# number is in hex
return unichr(int('0x'+ent, 16))
else:
# they were using a name
cp = n2cp.get(ent)
if cp: return unichr(cp)
else: return match.group()
entity_re = re.compile(r'&(#?)(x?)(\w+);')
return entity_re.subn(substitute_entity, string)[0]
gracias. que tiene Django? porque miré en los documentos pero no pude encontrar nada ... – rick
Se llama django.utils.html.escape, al parecer. Mira la otra pregunta de stackoverflow que he vinculado para obtener más detalles. – easel
parece que django.utils.html.escape solo funciona para codificar, no decodificar. Terminé usando BeautifulSoup. Gracias – rick