我收到一条错误消息,提示未定义lowercase_lines

时间:2020-10-10 18:25:47

标签: python

import string

def getData(filename):
  with open(filename,'r') as f:
    lines=[line.rstrip() for line in f]
    lines=[x.lower() for x in lines]
    return lines
filename="bibleSentences.txt"
getData(filename)

def normalize(filename):
    lowercase_lines=[x.lower() for x in getData(filename)]
    return lowercase_lines  
normalize(filename)

def replace_all(text,dic):
  for p in normalize(filename):
    for i,j in dic.iteritems():
      text=text.replace(i,j)
  print (text)
  return text
text=lowercase_lines
dic={"and":"","the" :"", "in":"", "it":"", "was":"", "his":"", "of":"", "so":"" }
print(replace_all(normalize))

3 个答案:

答案 0 :(得分:1)

问题在于lowercase_linesnormalize函数的局部变量,您在调用该函数时并未将其返回值保存到变量中。

只需放置lowercase_lines = normalize(filename)

答案 1 :(得分:0)

在此函数中唯一定义的lowercase_lines

def normalize(filename):
    lowercase_lines=[x.lower() for x in getData(filename)]
    return lowercase_lines  

但是该变量在所谓的“函数作用域”中,这意味着它仅在该函数存在之前存在。您需要捕获从函数返回的值,以便可以在函数外部使用它。但是您实际上是在执行以下操作:

for p in normalize(filename):

我看不到该行的价值:

text=lowercase_lines

为您服务。您已经在上面使用了normalize()函数的结果。我认为删除该行是您想要做的,除非还有其他代码使用值text

答案 2 :(得分:0)

您的函数都是返回值,但是您需要将它们设置为变量:

lines = getData(filename)

lowercase_lines = normalize(filename)