Python 3.2 and html.escape function

Steven D'Aprano steve+comp.lang.python at pearwood.info
Sun Feb 20 08:56:16 EST 2011


On Sun, 20 Feb 2011 08:15:35 -0500, Gerald Britton wrote:

> I see that Python 3.2 includes a new module -- html -- with a single
> function -- escape.  I would like to know how this function differs from
> xml.sax.saxutils.escape and, if there is no difference (or only a minor
> one), what the need is for this new module and its lone function

Unless the html API has changed radically since Python 3.2a, I believe 
you are mistaken.

[steve at sylar ~]$ python3.2
Python 3.2a1 (r32a1:83318, Aug 12 2010, 02:17:22)
[GCC 4.1.2 20070925 (Red Hat 4.1.2-27)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import html
>>> help(html)

which gives me the following information:



Help on package html:

NAME
    html - # This directory is a Python package.

FILE
    /usr/local/lib/python3.2/html/__init__.py

MODULE DOCS
    http://docs.python.org/library/html

PACKAGE CONTENTS
    entities
    parser



So html is not a module, but a package that includes two sub-modules, 
entities and parser. I see no sign of anything called "escape" in either 
the top level html package, or either of the sub-modules, and the word 
"escape" only appears twice in the whole package, both times as 
"unescape":


[steve at sylar ~]$ cd /usr/local/lib/python3.2/html/
[steve at sylar html]$ ls
entities.py  __init__.py  parser.py  __pycache__
[steve at sylar html]$ grep -i escape *.py
parser.py:                attrvalue = self.unescape(attrvalue)
parser.py:    def unescape(self, s):


So I don't know what you are looking at, but I don't believe it is the 
standard html package in the Python standard library. Perhaps you have 
accidentally shadowed it with your own html module? Try this:

>>> import html
>>> html.__file__
'/usr/local/lib/python3.2/html/__init__.py'



-- 
Steven



More information about the Python-list mailing list