2013-02-18 13 views
1

我正在使用generate_token函數來標記特定的代碼。問題是我無法添加「打印」和「輸入」作爲關鍵字。它將它們作爲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將它重新變成類似文件的東西? – 2013-02-18 01:21:48

回答

1

tokenize模塊沒有對關鍵字進行任何說明。所有關鍵字都以NAME的形式返回,那麼您必須決定哪些是關鍵字,通常使用keyword模塊。不過,如果你喜歡,你可以使用其他方法。

+0

什麼時候應該使用關鍵字模塊?標記模塊之前?指定我想要「打印」和「輸入」?如何使用關鍵字模塊將這兩個單詞添加爲關鍵字。 – 2013-02-18 01:36:16

+0

你有沒有試過運行你的代碼?你會看到標識符和關鍵字的ttype是NAME。然後,您可以決定哪些是您喜歡的關鍵字。 – 2013-02-18 01:41:31

+0

雅我試着運行我的代碼,並獲得類型作爲名稱。我在Python文檔中看到了關鍵字模塊,並且看到我們只能知道某個單詞是否爲關鍵字。沒有將這些詞作爲關鍵字添加的功能。此外,單詞「打印」是python關鍵字,我仍然把它作爲NAME類型。 – 2013-02-18 01:45:40

相關問題