我不明白为什么会出现错误
NameError:name' corpus'未定义
def pretreatment(fileName):
with open(fileName, 'r') as file:
global corpus
text = file.readlines()
corpus = []
for occurrence in text:
occurrence = occurrence.replace('.',' ')
occurrence = occurrence.replace(',',' ')
occurrence = occurrence.replace(';',' ')
occurrence = occurrence.replace('(',' ')
occurrence = occurrence.replace(')',' ')
occurrence = occurrence.replace('?',' ')
occurrence = occurrence.replace('!',' ')
occurrence = occurrence.replace(':',' ')
corpus.append(occurrence)
return corpus
def lexical_analysis(corpus):
global corpus
lexical_corpus = pretreatment(corpus)
tokens = nltk.word_tokenize(lexical_corpus)
return tokens
print(pretreatment("blabla.txt"))
print(lexical_analysis(corpus))
我在lexical_analysis函数中调用了预处理函数,但我仍然有一个未定义的变量错误。
我想利用并询问是否有办法以更优雅的方式使用替换功能。
编辑:感谢您的所有解释。我只是设法将变量声明为全局变量,我理解问题是什么,一切都运行得很好
全局变量名
答案 0 :(得分:2)
corpus
是函数'预处理`中的局部变量。仅仅因为你已经调用了函数并不意味着它将(或应该)开始存在于全局范围内。尝试阅读Python中的范围。
print(lexical_analysis(pretreatment('blabla.txt')) # should work
答案 1 :(得分:1)
语料库未在全局范围内定义,因此您收到错误。
你可以这样使用,
corpus = pretreatment("blabla.txt")
print(lexical_analysis(corpus))
或
print(lexical_analysis(pretreatment("blabla.txt")))