stdlib `tokenize` 的包装器,可以来回转换。
项目描述
tokenize-rt
stdlib tokenize
模块不能正确来回转换。此stdlib包装器提供了两个额外的标记 ESCAPED_NL
和 UNIMPORTANT_WS
,以及一个 Token
数据类型。使用 src_to_tokens
和 tokens_to_src
来来回转换。
如果您正在编写基于Python标记化的重构工具,则此库非常有用。
安装
pip install tokenize-rt
用法
数据结构
tokenize_rt.Offset(line=None, utf8_byte_offset=None)
标记偏移量,在交叉引用ast和标记化源时很有用。
tokenize_rt.Token(name, src, line=None, utf8_byte_offset=None)
构建标记
name
:在token.tok_name
列出的标记名称之一,或ESCAPED_NL
或UNIMPORTANT_WS
src
:标记的源文本line
:此标记出现的行号。utf8_byte_offset
:此标记在行中的utf8字节偏移量。
tokenize_rt.Token.offset
检索此标记的 Offset
。
在 Token
表示之间转换
tokenize_rt.src_to_tokens(text: str) -> List[Token]
tokenize_rt.tokens_to_src(Iterable[Token]) -> str
由 tokenize-rt
添加的额外标记
tokenize_rt.ESCAPED_NL
tokenize_rt.UNIMPORTANT_WS
辅助工具
tokenize_rt.NON_CODING_TOKENS
一个包含可能在其他标记之间出现但不影响控制流或代码的标记的 frozenset
COMMENT
ESCAPED_NL
NL
UNIMPORTANT_WS
tokenize_rt.parse_string_literal(text: str) -> Tuple[str, str]
将字符串字面量解析为其前缀和字符串内容
>>> parse_string_literal('f"foo"')
('f', '"foo"')
tokenize_rt.reversed_enumerate(Sequence[Token]) -> Iterator[Tuple[int, Token]]
产生 (index, token)
对。在重写源时很有用。
tokenize_rt.rfind_string_parts(Sequence[Token], i) -> Tuple[int, ...]
查找(连接)字符串字面量的字符串部分索引
i
应该从字符串字面量的末尾开始- 对于不是字符串字面量的内容,返回
()
(一个空元组)
>>> tokens = src_to_tokens('"foo" "bar".capitalize()')
>>> rfind_string_parts(tokens, 2)
(0, 2)
>>> tokens = src_to_tokens('("foo" "bar").capitalize()')
>>> rfind_string_parts(tokens, 4)
(1, 3)
与 tokenize
的不同之处
tokenize-rt
为转义换行符的 "token" 添加ESCAPED_NL
tokenize-rt
为空白字符添加UNIMPORTANT_WS
(在tokenize
中会被丢弃)tokenize-rt
标准化了字符串前缀,即使它们没有被解析——例如,这意味着即使是在 Python 2 中,你也会看到Token('STRING', "f'foo'", ...)
tokenize-rt
标准化了 Python 2 中的长整型字面量(如4l
/4L
)和八进制字面量(如0755
),在 Python 3 中(便于在运行 Python 3 时重写 Python 2 代码)。
示例用法
项目详情
关闭
tokenize_rt-6.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9711bdfc51210211137499b5e355d3de5ec88a85d2025c520cbb921b5194367 |
|
MD5 | fe0a653e9db2829bc1cf7900f7c48e32 |
|
BLAKE2b-256 | 7d096257dabdeab5097d72c5d874f29b33cd667ec411af6667922d84f85b79b5 |
关闭
tokenize_rt-6.0.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d4ff7ded2873512938b4f8cbb98c9b07118f01d30ac585a30d7a88353ca36d22 |
|
MD5 | 79de1af335549eec7d4bbb7977e724ee |
|
BLAKE2b-256 | 5cc244486862562c6902778ccf88001ad5ea3f8da5c030c638cac8be72f65b40 |