Различные значения AMPER, BACKQUOTE и т. Д. Соответствуют номеру маркера соответствующего символа для токенов/операторов python. т.е. AMPER = & (амперсанд), AMPEREQUAL = "& =".
Однако на самом деле вам не нужно заботиться об этом. Они используются внутренним C tokeniser, но оболочка python упрощает вывод, переводя все символы оператора в токен OP
. Вы можете перевести символические идентификаторы токена (первое значение в каждом токенном кортеже) на символическое имя, используя словарь tok_name в токен-модуле. Например:
>>> import tokenize, token
>>> s = "{'test':'123','hehe':['hooray',0x10]}"
>>> for t in tokenize.generate_tokens(iter([s]).next):
print token.tok_name[t[0]],
OP STRING OP STRING OP STRING OP OP STRING OP NUMBER OP OP ENDMARKER
Как быстро заявление отладки для описания лексем немного лучше, вы можете также использовать tokenize.printtoken. Это недокументированная, и похоже, что нет в Python3, так что не полагаться на него для производства кода, но, как быстрый взгляд подхалима на то, что означают маркеры, вы можете найти его полезным:
>>> for t in tokenize.generate_tokens(iter([s]).next):
tokenize.printtoken(*t)
1,0-1,1: OP '{'
1,1-1,7: STRING "'test'"
1,7-1,8: OP ':'
1,8-1,13: STRING "'123'"
1,13-1,14: OP ','
1,14-1,20: STRING "'hehe'"
1,20-1,21: OP ':'
1,21-1,22: OP '['
1,22-1,30: STRING "'hooray'"
1,30-1,31: OP ','
1,31-1,35: NUMBER '0x10'
1,35-1,36: OP ']'
1,36-1,37: OP '}'
2,0-2,0: ENDMARKER ''
различные значения в наборе вы получите обратно для каждых маркеров, в порядке:
- маркер Id (соответствует типу, например, STRING, OP, NAME и т.д.)
- строки - фактический маркер текста для этот токен, например «&» или «строка»
- Начало (строка , столбец) на вашем входе
- Конец (строка, столбец) на вашем входе
- Полный текст строки, в которой находится токен.
«Мне нужно немедленное решение». да? – SilentGhost