赞
踩
对输入进行解析标记¶
主要的入口是一个生成器 generator:
tokenize.tokenize(readline)¶
生成器 tokenize() 需要一个 readline 参数,这个参数必须是一个可调用对象,且能提供与文件对象的 io.IOBase.readline() 方法相同的接口。每次调用这个函数都要 返回字节类型输入的一行数据。
The generator produces 5-tuples with these members: the token type; the
token string; a 2-tuple (srow, scol) of ints specifying the row and
column where the token begins in the source; a 2-tuple (erow, ecol) of
ints specifying the row and column where the token ends in the source; and
the line on which the token was found. The line passed (the last tuple item)
is the physical line. The 5 tuple is returned as a named tuple
with the field names:
type string start end line.
The returned named tuple has an additional property named
exact_type that contains the exact operator type for
OP tokens. For all other token types exact_type
equals the named tuple type field.
3.1 版更變:Added support for named tuples.
3.3 版更變:Added support for exact_type.
tokenize() determines the source encoding of the file by looking for a
UTF-8 BOM or encoding cookie, according to PEP 263.
tokenize.generate_tokens(readline)¶
Tokenize a source reading unicode strings instead of bytes.
Like tokenize(), the readline argument is a callable returning
a single line of input. However, generate_tokens() expects readline
to return a str object rather than bytes.
The result is an iterator yielding named tuples, exactly like
tokenize(). It does not yield an ENCODING token.
All constants from the token module are also exported from
tokenize.
Another function is provided to reverse the tokenization process. This is
useful for creating tools that tokenize a script, modify the token stream, and
write back the modified script.
tokenize.untokenize(iterable)¶
Converts tokens back into Python source code. The iterable must return
sequences with at least two elements, the token type and the token string.
Any additional sequence elements are ignored.
The reconstructed script is returned as a single string. The result is
guaranteed to tokenize back to match the input so that the conversion is
lossless and round-trips are assured. The guarantee applies only to the
token type and token string as the spacing between tokens (column
positions) may change.
It returns bytes, encoded using the ENCODING token, which
is the first token sequence output by tokenize(). If there is no
encoding token in the input, it returns a str instead.
tokenize() needs to detect the encoding of source files it tokenizes. The
function it uses to do this is available:
tokenize.detect_encoding(readline)¶
The detect_encoding() function is used to detect the encoding that
should be used to decode a Python source file. It requires one argument,
readline, in the same way as the tokenize() generator.
It will call readline a maximum of twice, and return the encoding used
(as a string) and a list of any lines (not decoded from bytes) it has read
in.
It detects the encoding from the presence of a UTF-8 BOM or an encoding
cookie as specified in PEP 263. If both a BOM and a cookie are present,
but disagree, a SyntaxError will be raised. Note that if the BOM is found,
'utf-8-sig' will be returned as an encoding.
If no encoding is specified, then the default of 'utf-8' will be
returned.
Use open() to open Python source files: it uses
detect_encoding() to detect the file encoding.
tokenize.open(filename)¶
Open a file in read only mode using the encoding detected by
detect_encoding().
3.2 版新加入.
exceptiontokenize.TokenError¶
Raised when either a docstring or expression that may be split over several
lines is not completed anywhere in the file, for example:
"""Beginning of
docstring
或是:
[1,
2,
3
Note that unclosed single-quoted strings do not cause an error to be
raised. They are tokenized as ERRORTOKEN, followed by the
tokenization of their contents.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。