试图分裂和标记一首诗(在这种情况下是ha句),这更像是一种教会自己如何使用nltk和类的方法。当我运行下面的代码时,即使(我的想法)我得到一个Name Error: name 'psplit' is not defined
,当我从split函数返回它时它被定义了。任何人都可以帮我弄清楚这里出了什么问题吗?
import nltk
poem = "In the cicada's cry\nNo sign can foretell\nHow soon it must die"
class Intro():
def __init__(self, poem):
self.__poem = poem
def split(self):
psplit = (poem.split('\n'))
psplit = str(psplit)
return psplit
def tokenizer(self):
t = nltk.tokenize(psplit)
return t
i = Intro(poem)
print(i.split())
print(i.tokenizer())
答案 0 :(得分:3)
您的代码中存在一些问题:
在split
方法中,您必须使用self.__poem
来访问类的poem属性 - 就像在构造函数中所做的那样。
psplit
方法中的split
变量只是一个局部变量,所以你可以在这个方法中使用它而不是其他地方。如果要在tokenize
方法中使变量可用,则必须将其作为参数传递或将其存储为附加属性:
...
def tokenizer(self, psplit):
t = nltk.tokenize(psplit)
return t
...
psplit = i.split()
print(i.tokenizer(psplit))
或者:
def __init__(self, poem):
...
self._psplit = None
...
def split(self):
self._psplit = (poem.split('\n'))
self._psplit = str(psplit)
def tokenizer(self):
t = nltk.tokenize(self._psplit)
return t
...
i.split()
print(i.tokenizer())
另外请确保缩进正确。