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。我编辑了错误的文本:我想你编辑了错误的答案。是的。但只要有助于解决问题;)