23.2. shlex —简单的词法分析

版本 1.5.2 中的新Function。

源代码: Lib/shlex.py


shlex类使您可以轻松地为类似于 Unix Shell 的简单语法编写词法分析器。这对于编写迷你语言(例如,在 Python 应用程序的运行控制文件中)或解析带引号的字符串通常很有用。

在 Python 2.7.3 之前,此模块不支持 UnicodeImporting。

shlex模块定义以下Function:

2.3 版的新Function。

在 2.6 版中进行了更改:添加了* posix *参数。

Note

由于split()函数实例化shlex实例,因此将None传递给* s *将会读取要从标准 Importing 中拆分的字符串。

shlex模块定义以下类:

See also

  • Module ConfigParser

  • 解析器,用于类似于 Windows .ini文件的配置文件。

23.2.1. shlex 对象

shlex实例具有以下方法:

通常,此方法首先会删除参数中的所有引号。如果结果是绝对路径名,或者没有有效的先前的源请求,或者先前的源是流(例如sys.stdin),则结果将保留。否则,如果结果是相对路径名,则在源包含堆栈上紧接在文件名之前的文件名的目录部分会被加上前缀(此行为类似于 C 预处理器处理#include "file.h"的方式)。

操纵的结果被视为文件名,并返回为 Tuples 的第一个组件,并在其上调用open()以产生第二个组件。 (注意:这与实例初始化中的参数 Sequences 相反!)

该钩子是公开的,因此您可以使用它来实现目录搜索路径,添加文件 extensions 和其他名称空间黑客。没有相应的“关闭”钩子,但是 shlex 实例在返回 EOF 时将调用源 Importing 流的close()方法。

若要更明确地控制源堆栈,请使用push_source()pop_source()方法。

2.1 版中的新Function。

2.1 版中的新Function。

提供此便利是为了鼓励shlex用户以 Emacs 和其他 Unix 工具理解的标准可分析格式生成错误消息。

shlex子类的实例具有一些公共实例变量,这些变量可以控制词法分析或可用于调试:

2.3 版的新Function。

2.3 版的新Function。

2.3 版的新Function。

2.3 版的新Function。

23.2.2. 解析规则

在非 POSIX 模式下运行时,shlex将try遵守以下规则。

在 POSIX 模式下运行时,shlex将try遵守以下解析规则。

首页