Mam ciąg z symboli tak:Jak uniknąć przechodzenia apostrofów i podobnych w Pythonie?
'
to apostrof widocznie.
Próbowałem saxutils.unescape() bez powodzenia próbowali urllib.unquote i()
Jak mogę rozszyfrować tego? Dzięki!
Mam ciąg z symboli tak:Jak uniknąć przechodzenia apostrofów i podobnych w Pythonie?
'
to apostrof widocznie.
Próbowałem saxutils.unescape() bez powodzenia próbowali urllib.unquote i()
Jak mogę rozszyfrować tego? Dzięki!
Wyjazd this question. To, czego szukasz, to "dekodowanie encji html". Zazwyczaj znajdziesz funkcję o nazwie "htmldecode", która zrobi to, co chcesz. Zarówno Django, jak i Gepard zapewniają takie funkcje jak BeautifulSoup.
Druga odpowiedź będzie działać świetnie, jeśli nie chcesz korzystać z biblioteki, a wszystkie elementy są numeryczne.
nie jestem pewien co do & lub #, ale tutaj jest jakiś kod do dekodowania:
>>>chr(39)
"'"
>>>ord("'")
39
Najbardziej niezawodnym rozwiązaniem wydaje się być this function autorstwa Larsa Pythona Fredrika Lundha. Nie jest to najkrótsze rozwiązanie, ale obsługuje nazwane elementy, a także kody szesnastkowe i dziesiętne.
Spróbuj tego: (znaleziono go 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]
dzięki. co ma Django? ponieważ przeglądałem dokumenty, ale nie mogłem niczego znaleźć ... – rick
Nazywa się django.utils.html.escape, podobno. Sprawdź inne pytanie o stackoverflow, które podałem, by uzyskać więcej szczegółów. – easel
Wygląda na to, że django.utils.html.escape działa tylko w celu kodowania, a nie dekodowania. Skończyłem z wykorzystaniem BeautifulSoup. dzięki – rick