python tokenize怎么用_tokenize -- 对 Python 代码使用的标记解析器 — Python 3.7.9 文档...

本文介绍了Python的tokenize模块,用于对Python代码进行标记解析。主要功能包括:tokenize.tokenize()生成器,它需要一个readline参数;tokenize.untokenize()将令牌转换回Python源代码;tokenize.detect_encoding()检测源文件的编码;此外,还提到了tokenize.TokenError异常。tokenize模块确保了转换的无损性,支持编码检测和源代码的重建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对输入进行解析标记¶

主要的入口是一个 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 logical line; continuation lines are included. 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.

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().

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值