非常教程

Python参考手册

结构化标记 | Structured Markup

sgmllib

自2.6版以来已弃用:该sgmllib模块已在Python 3中删除。

该模块定义了一个类SGMLParser,它用作解析SGML(标准通用标记语言)格式的文本文件的基础。 实际上,它并没有提供完整的SGML解析器 - 它只解析SGML,只要它被HTML使用,并且该模块仅作为htmllib模块的基础存在。 HTMLParser模块提供了另一个支持XHTML并提供了一些不同接口的HTML解析器。

class sgmllib.SGMLParser

SGMLParser类实例化没有参数。解析器被硬编码以识别以下结构:

  • 打开和关闭<tag attr =“value”...>和</ tag>标签。
  • 表单&#的形式的数字字符引用。
  • 表单的实体引用&name;
  • SGML评论形式<! - text - >。 请注意,空格,制表符和换行符允许在尾部>和紧接的前一个之间。

一个例外也被定义为:

exception sgmllib.SGMLParseError

SGMLParser类在解析时遇到错误时引发的异常。

2.1版本中的新功能。

SGMLParser 实例具有以下方法:

SGMLParser.reset()

重置实例。丢失所有未处理的数据。这在实例化时被隐含地调用。

SGMLParser.setnomoretags()

停止处理标签。将所有后续输入视为文字输入(CDATA)。(只有这样<PLAINTEXT>才能实现HTML标签。)

SGMLParser.setliteral()

进入文字模式(CDATA模式)。

SGMLParser.feed(data)

将一些文本提供给解析器。 它是由完整的元素组成的, 不完整的数据被缓冲,直到更多的数据被馈送或调用close()。

SGMLParser.close()

强制处理所有缓冲数据,就好像它后面跟着一个文件结束标记。该方法可以由派生类重新定义,以在输入结束时定义附加处理,但重定义的版本应始终调用close()

SGMLParser.get_starttag_text()

返回最近打开的开始标签的文本。这通常不是结构化处理所需要的,但对于处理HTML“部署”或重新生成输入时只需要很少的修改(可以保留属性之间的空白等)可能很有用。

SGMLParser.handle_starttag(tag, method, attributes)

调用此方法来处理已定义start_tag()或do_tag()方法的开始标记。 标记参数是转换为小写的标记的名称,方法参数是应该用于支持开始标记的语义解释的绑定方法。 attributes参数是一个包含标签<>括号内的属性的(名称,值)对列表。

该名称已被翻译成小写。 已经解释了该值中的双引号和反斜杠,以及已知字符引用和已知实体引用以分号结尾(通常,实体引用可以由任何非字母数字字符终止,但这会破坏< 当鸡蛋是有效的实体名称时,HREF =“url?spam = 1&eggs = 2”>)。

例如,对于<A HREF="http://www.cwi.nl/">这个标签,这个方法将被称为unknown_starttag('a',[('href','http://www.cwi.NL/')])。 基本实现只是简单地调用具有属性的方法作为唯一的参数。

2.5版新增功能:处理属性值中的实体和字符引用。

SGMLParser.handle_endtag(tag, method)

调用此方法来处理已定义end_tag()方法的尾标签。 标记参数是转换为小写的标记的名称,方法参数是应该用于支持结束标记的语义解释的绑定方法。 如果没有为关闭元素定义end_tag()方法,则不调用此处理程序。 基本实现只是简单地调用方法。

SGMLParser.handle_data(data)

调用此方法来处理任意数据。它打算被派生类覆盖; 基类实现什么都不做。

SGMLParser.handle_charref(ref)

调用此方法来处理&#ref ;.表单的字符引用。 基本实现使用convert_charref()将引用转换为字符串。 如果该方法返回一个字符串,则将其传递给handle_data(),否则调用unknown_charref(ref)来处理该错误。

在版本2.5中进行了更改:使用convert_charref()而不是对转换进行硬编码。

SGMLParser.convert_charref(ref)

将字符引用转换为字符串或None。 ref是以字符串形式传入的引用。 在基本实现中,ref必须是0-255范围内的十进制数。 它转换使用convert_codepoint()方法找到的代码点。 如果ref无效或超出范围,则此方法返回无。 此方法由默认的handle_charref()实现和属性值解析器调用。

2.5版本中的新功能。

SGMLParser.convert_codepoint(codepoint)

将代码点转换为str值。 在适当的情况下,可以在这里处理编码,尽管sgmllib的其余部分在这个问题上是不知情的。

2.5版本中的新功能。

SGMLParser.handle_entityref(ref)

调用此方法来处理形式为&ref;的通用实体引用。 其中ref是一般实体参考。 它通过将ref传递给convert_entityref()来转换ref。 如果一个翻译被返回,它会在翻译中调用handle_data()方法; 否则,它调用方法unknown_entityref(ref)。 默认的entitydefs为&amp;,&,&,&,&lt;和&quot;定义了翻译。

在版本2.5中进行了更改:使用convert_entityref()而不是对转换进行硬编码。

SGMLParser.convert_entityref(ref)

将已命名的实体引用转换为str值或None。 结果值不会被解析。 ref将只是实体的名称。 默认实现在实例(或类)变量entitydefs中查找ref,它应该是从实体名称到相应翻译的映射。 如果ref没有可用的翻译,则此方法返回None。 该方法由默认的handle_entityref()实现和属性值解析器调用。

2.5版本中的新功能。

SGMLParser.handle_comment(comment)

此方法在遇到注释时调用。 comment参数是一个包含<! - 和 - >分隔符之间文本的字符串,但不包含分隔符本身。 例如,注释<! - text - >将导致使用参数'text'调用此方法。 默认方法什么都不做。

SGMLParser.handle_decl(data)

在解析器读取SGML声明时调用的方法。 实际上,DOCTYPE声明是在HTML中唯一观察到的,但解析器不区分不同的(或破坏的)声明。 DOCTYPE声明中的内部子集不受支持。 数据参数将是<!...>标记内声明的全部内容。 默认实现什么都不做。

SGMLParser.report_unbalanced(tag)

当找到与任何打开元素都不对应的结束标记时,将调用此方法。

SGMLParser.unknown_starttag(tag, attributes)

调用此方法来处理未知的开始标记。它打算被派生类覆盖; 基类实现什么都不做。

SGMLParser.unknown_endtag(tag)

调用此方法来处理未知的结束标记。它打算被派生类覆盖; 基类实现什么都不做。

SGMLParser.unknown_charref(ref)

调用此方法来处理不可解析的数字字符引用。请参阅handle_charref()确定默认处理的内容。它打算被派生类覆盖; 基类实现什么都不做。

SGMLParser.unknown_entityref(ref)

调用此方法来处理未知的实体引用。它打算被派生类覆盖; 基类实现什么都不做。

除了重写或扩展上面列出的方法之外,派生类还可以定义以下形式的方法来定义特定标记的处理。输入流中的标签名称与个案无关; 方法名称中出现的标签必须采用小写形式:

SGMLParser.start_tag(attributes)

调用此方法来处理开始标记标记。 它优先于do_tag()。 attributes参数的含义与上述handle_starttag()所描述的相同。

SGMLParser.do_tag(attributes)

调用此方法来处理未定义start_tag()方法的开始标记标记。 attributes参数的含义与上述handle_starttag()所描述的相同。

SGMLParser.end_tag()

调用此方法来处理结束标记tag

请注意,解析器维护一堆尚未找到结束标记的打开元素。 只有由start_tag()处理的标签被推送到这个堆栈上。 这些标签的end_tag()方法的定义是可选的。 对于由do_tag()或者unknown_tag()处理的标签,不必定义end_tag()方法。 如果定义,它将不会被使用。 如果标记都存在start_tag()和do_tag()方法,则start_tag()方法优先。

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法