Fix Issue10759 - html.parser.unescape() fails on HTML entities with incorrect syntax

This commit is contained in:
Senthil Kumaran 2010-12-28 15:55:16 +00:00
parent 3b4499c5c7
commit 164540fee1
2 changed files with 15 additions and 7 deletions

View file

@ -434,6 +434,7 @@ def unescape(self, s):
return s
def replaceEntities(s):
s = s.groups()[0]
try:
if s[0] == "#":
s = s[1:]
if s[0] in ['x','X']:
@ -441,6 +442,8 @@ def replaceEntities(s):
else:
c = int(s)
return chr(c)
except ValueError:
return '&#'+ s +';'
else:
# Cannot use name2codepoint directly, because HTMLParser
# supports apos, which is not part of HTML 4

View file

@ -356,6 +356,11 @@ def test_weird_chars_in_unquoted_attribute_values(self):
[('action', 'bogus|&#()value')])],
collector = self.collector)
def test_unescape_function(self):
p = html.parser.HTMLParser()
self.assertEqual(p.unescape('&#bad;'),'&#bad;')
self.assertEqual(p.unescape('&'),'&')
def test_main():
support.run_unittest(HTMLParserTestCase, HTMLParserTolerantTestCase)