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
子句,就像我插入并注释掉的那样。
首先,我是 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
子句,就像我插入并注释掉的那样。