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))
答案 0 :(得分:1)
问题在于lowercase_lines
是normalize
函数的局部变量,您在调用该函数时并未将其返回值保存到变量中。
只需放置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)
等