如何使用 Tokenize 模块对 python 代码进行标记?

Muh*_*man 3 tokenize python-3.x

假设我有一个包含 python 代码的字符串。

input = "import nltk
 from nltk.stem import PorterStemmer
 porter_stemmer=PorterStemmer()
 words=["connect","connected","connection","connections","connects"]
 stemmed_words=[porter_stemmer.stem(word) for word in words]
 stemmed_words"
Run Code Online (Sandbox Code Playgroud)

如何对代码进行标记?我找到了 tokenize 模块(https://docs.python.org/3/library/tokenize.html)。但是,我不清楚如何使用该模块。它有 tokenize.tokenize(readline) 但参数采用生成器,而不是字符串。

Min*_*665 6

import tokenize
import io

inp = """import nltk
 from nltk.stem import PorterStemmer
 porter_stemmer=PorterStemmer()
 words=["connect","connected","connection","connections","connects"]
 stemmed_words=[porter_stemmer.stem(word) for word in words]
 stemmed_words"""

for token in tokenize.generate_tokens(io.StringIO(inp).readline):
 print(token)
Run Code Online (Sandbox Code Playgroud)

tokenize.tokenize采用方法而不是字符串。该方法应该是 IO 对象的 readline 方法。另外,tokenize.tokenize如果期望 readline 方法返回字节,则可以使用tokenize.generate_tokens返回字符串的 readline 方法来代替。

您的输入也应该位于文档字符串中,因为它有多行长。

有关更多信息,请参阅io.TextIOBasetokenize.generate_tokens 。