标记化rt
stdlibtokenize模块不能正确往返。这个包装纸
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:此标记出现的行号。这将是None的
ESCAPED_NL和UNIMPORTANT_WS标记。
utf8_byte_offset:此标记出现在
行。对于ESCAPED_NL和UNIMPORTANT_WS令牌,这将是None。
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规范化字符串前缀,即使未对其进行分析--
例如,这意味着即使在
Python2。
tokenize-rt规范化python 2长文本(4l/4L)和八进制
python 3中的文本(0755)(以便在
运行python 3)。
示例用法
欢迎加入QQ群-->: 979659372
推荐PyPI第三方库