Python 为什么我会得到这个unboundLocalError?
该函数应检查专有术语列表中的词语:Python 为什么我会得到这个unboundLocalError?,python,Python,该函数应检查专有术语列表中的词语: proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself"] def censored_list(text, List): for i in text: for word in List: if i == word: new_
proprietary_terms = ["she", "personality matrix", "sense of self", "self-preservation", "learning algorithm", "her", "herself"]
def censored_list(text, List):
for i in text:
for word in List:
if i == word:
new_text = text.replace(i, "*" )
return new_text
print(censored_list(email_two, proprietary_terms))
但相反,我得到:
Traceback (most recent call last):
File "script.py", line 19, in <module>
print(censored_list(email_two, proprietary_terms))
File "script.py", line 18, in censored_list
return new_text
UnboundLocalError: local variable 'new_text' referenced before assignment
回溯(最近一次呼叫最后一次):
文件“script.py”,第19行,在
打印(审查清单(电子邮件、专有条款)
文件“script.py”,第18行,在截尾列表中
返回新文本
UnboundLocalError:赋值前引用的局部变量“new_text”
另一个问题,逻辑似乎正确吗
编辑:
有人能给我看一下上面代码的一个工作示例代码片段吗?我想这就是您想要的:
重新导入
text=“她在自我感觉中有一个人格矩阵”
专有_术语=[“她”、“个性矩阵”、“自我意识”、“自我保护”、“学习算法”、“她”、“她自己”]
def审查的_列表(文本,列表):
打印(text.lower())
对于列表中的单词:
打印(word)
如果re.match('^(?=.*('+word+')).*$',text.lower()):
打印(“找到:”,word)
text=text.lower().replace(单词“*”)
返回文本
打印(审查清单(文本、专有条款))
我想这就是你想要的:
重新导入
text=“她在自我感觉中有一个人格矩阵”
专有_术语=[“她”、“个性矩阵”、“自我意识”、“自我保护”、“学习算法”、“她”、“她自己”]
def审查的_列表(文本,列表):
打印(text.lower())
对于列表中的单词:
打印(word)
如果re.match('^(?=.*('+word+')).*$',text.lower()):
打印(“找到:”,word)
text=text.lower().replace(单词“*”)
返回文本
打印(审查清单(文本、专有条款))
我想这就是你想要的:
重新导入
text=“她在自我感觉中有一个人格矩阵”
专有_术语=[“她”、“个性矩阵”、“自我意识”、“自我保护”、“学习算法”、“她”、“她自己”]
def审查的_列表(文本,列表):
打印(text.lower())
对于列表中的单词:
打印(word)
如果re.match('^(?=.*('+word+')).*$',text.lower()):
打印(“找到:”,word)
text=text.lower().replace(单词“*”)
返回文本
打印(审查清单(文本、专有条款))
但您的代码不起作用的原因有几个问题:
new\u text
变量。否则,该变量不会被绑定我想这就是你想要的:
重新导入
text=“她在自我感觉中有一个人格矩阵”
专有_术语=[“她”、“个性矩阵”、“自我意识”、“自我保护”、“学习算法”、“她”、“她自己”]
def审查的_列表(文本,列表):
打印(text.lower())
对于列表中的单词:
打印(word)
如果re.match('^(?=.*('+word+')).*$',text.lower()):
打印(“找到:”,word)
text=text.lower().replace(单词“*”)
返回文本
打印(审查清单(文本、专有条款))
但您的代码不起作用的原因有几个问题:
new\u text
变量。否则,该变量不会被绑定您在if语句中声明了
new\u text
,我认为if I==word:
不会执行,因此您会遇到此错误。请检查您的if条件以了解为什么会出现UnboundLocalError。对于解决方案,请参见if语句中声明的new\u text
,我认为if I==word:
不会执行,因此您会出现此错误。请检查您的if条件,查看为什么会出现UnboundLocalError。有关解决方案,请参见sry。我编辑了错误的文本:我想你编辑了错误的答案。是的。但只要有助于解决问题;)sry。我编辑了错误的文本:我想你编辑了错误的答案。是的。但只要有助于解决问题;)