2013-02-18 4 views
1

Я использую функцию generate_token для tokenise определенного кода. Проблема в том, что я не могу добавить «print» и «input» в качестве ключевых слов. Он возвращает их как NAME, а не ключевые слова. Как добавить эти жетоны?Как добавить ключевые слова в токенизатор?

import token 
import tokenize 

try: 
    from cStringIO import StringIO 
except: 
    from io import StringIO 
file = open(filename) 
characters = file.read() 
file.close() 
code_reader = StringIO(characters).readline 

for num, (ttyp, ttok, _, _, _) in enumerate(tokenize.generate_tokens(code_reader)): 
    print("%5d %15s %r" % (num, token.tok_name[ttyp], ttok)) 
+2

PS: Почему вы читаете файл в строку, а затем используете StringIO, чтобы снова превратить его в файловую вещь? –

ответ

1

Модуль tokenize ничего не говорит о ключевых словах. Все ключевые слова возвращаются как NAME, тогда вам нужно решить, какие ключевые слова, как правило, с помощью модуля keyword. Однако, если хотите, вы можете использовать другие средства.

+0

Когда мы должны использовать модуль ключевого слова? перед модулем токенизации? указать, что я хочу «печатать» и «вводить»? Как добавить эти два слова в качестве ключевых слов с помощью модуля ключевого слова. –

+0

Вы пробовали использовать код? Вы увидите, что ttype - это NAME для идентификаторов и ключевых слов. Затем вы можете решить, какие ключевые слова вам нравятся. –

+0

Ya Я попробовал запустить свой код и получил тип NAME. Я видел модуль ключевого слова в документе python и видел, что мы можем знать только то, что конкретное слово является ключевым словом или нет. не было никаких функций для добавления слов в качестве ключевых слов. Кроме того, слово «print» является ключевым словом python, но я получаю его как тип NAME. –

Смежные вопросы