Python 名称错误。使用 Pandas 数据框时未定义名称

Python Name Error. Name is not defined while using Pandas dataframe

首先,我是 Python 的新手。我想要做的是从 CSV 中对我的数据进行词形还原。使用 pandas 读取 csv。 但是,虽然 运行 这行 lemmatized.append(temp) 上出现错误。它说 NameError: name 'temp' is not defined 我不知道是什么导致了这个错误。我正在使用 python 2.7。 如果你们 python 专家中的任何人能帮助我解决这个简单的问题,从而帮助我学习,我将不胜感激。

data = pd.read_csv('TrainingSETNEGATIVE.csv')
list = data['text'].values


def get_pos_tag(tag):
    if tag.startswith('V'):
        return 'v'
    elif tag.startswith('N'):
        return 'n'
    elif tag.startswith('J'):
        return 'a'
    elif tag.startswith('R'):
        return 'r'
    else:
        return 'n'


lemmatizer = WordNetLemmatizer()
with open('new_file.csv', 'w+', newline='') as myfile:
    wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
    for doc in list:
        tok_doc = nltk.word_tokenize(doc)
        pos_tag_doc = nltk.pos_tag(tok_doc)
        lemmatized = []
        for i in range(len(tok_doc)):
            tag = get_pos_tag(pos_tag_doc[i][1])
            if tag == 'r':
                if tok_doc[i].endswith('ly'):
                    temp = tok_doc[i].replace("ly", "")
            else:
                temp = lemmatizer.lemmatize(tok_doc[i], pos=tag)
            lemmatized.append(temp)
        lemmatized = " ".join(lemmatized)
        wr.writerow([lemmatized])
        print(lemmatized)

截图:

异常说明了一切:"name 'temp' is not defined"。所以变量temp在使用前没有定义

你的代码的问题在这里:

if tag == 'r':
    if tok_doc[i].endswith('ly'):
        temp = tok_doc[i].replace("ly", "")
    # else: temp = None
else:
    temp = lemmatizer.lemmatize(tok_doc[i], pos=tag)
lemmatized.append(temp)

如果 tag == 'r' 为 True 而 tok_doc[i].endswith('ly') 不是 True 那么 temp 永远不会被定义。

考虑添加一个 else 子句,就像我插入并注释掉的那样。