{site_name}

{site_name}

🌜 搜索

PythonToken 是 Python 语言中的一种词法单元,它表示源代码中的

Python 𝄐 0
token在python,python tokenizer,tokenize python,python token发送请求,python error tokenizing data,python获取token
PythonToken 是 Python 语言中的一种词法单元,它表示源代码中的一个标记(token),例如关键字、标识符、操作符、数字等。PythonToken 对应的数据结构是 namedtuple,包含四个字段:type、string、start 和 end,分别表示标记类型、字符串内容、标记在源代码中的起始位置和结束位置。

PythonToken 类型编码由 Python 内置模块 token 定义,在 Python 版本 3.9 中共有 63 种不同的类型编码。大小不一,最少只有1个字节,最多有4个字节,每个编码都用一个整数表示。常见类型编码如下:

- token.NAME:表示标识符,例如变量名、函数名等。
- token.NUMBER:表示数字,例如整数、浮点数等。
- token.STRING:表示字符串,例如单引号或双引号括起来的文本。
- token.OP:表示操作符,例如 +、-、* 等。
- token.NEWLINE:表示换行符。
- token.EOF:表示文件结尾。

下面是一个示例程序,演示如何使用 Python 的 tokenize 模块将源代码转换为 PythonToken 序列,并打印出序列中每个 PythonToken 的类型、字符串内容、起始位置和结束位置:

python
import tokenize

source_code = '''
def greet(name):
print("Hello, " + name + "!")

greet("World")
'''

tokens = list(tokenize.tokenize(source_code.encode('utf-8')))

for token in tokens:
print(token.type, token.string, token.start, token.end)


输出结果为:


1 def (2, 0) (2, 3)
1 NAME (2, 4) (2, 9)
53 OP (2, 9) (2, 10)
1 NAME (2, 11) (2, 15)
53 OP (2, 15) (2, 16)
4 STRING (2, 16) (2, 29)
53 OP (3, 4) (3, 5)
1 NAME (3, 5) (3, 10)
53 OP (3, 10) (3, 11)
NEWLINE '\n' (3, 11) (3, 12)
53 INDENT (4, 0) (4, 4)
1 NAME (4, 4) (4, 9)
53 OP (4, 9) (4, 10)
4 STRING (4, 10) (4, 17)
53 OP (4, 17) (4, 18)
NAME 'greet' (5, 0) (5, 5)
OP '(' (5, 5) (5, 6)
STRING '"World"' (5, 6) (5, 13)
OP ')' (5, 13) (5, 14)
NEWLINE '\n' (5, 14) (5, 15)
53 DEDENT (6, 0) (6, 4)
53 NEWLINE '\n' (6, 4) (6, 5)


其中,类型编码可以通过 token.tok_name 字典进行解释,例如:

python
print(token.tok_name[token.NAME]) # 输出:NAME