AttributeError:'list'对象没有属性'text'

时间:2016-07-06 09:29:40

标签: python attributes nltk

我正在使用nltk包中的Vader。 我按照vader教程导入了我的数据集:

    list = []
    for line in open("C:\Users\Luca\Desktop\Uni\Tesi\PythonTest\paolo.txt","r").readlines():
        for value in line.split(","):
            list.append(value)

然后我创建了删除标点符号的函数:

     def _words_only(self):
    text_mod = REGEX_REMOVE_PUNCTUATION.sub('', self.text)
    words_only = text_mod.split()
    words_only = [word for word in words_only if len(word) > 1]
    return words_only

但是当我尝试使用“仅限单词”功能时,我收到此错误

    AttributeError                            Traceback (most recent call last)
    <ipython-input-14-cbc12179c890> in <module>()
    ----> 1 _words_only(list)

    <ipython-input-13-68a545bbbaa4> in _words_only(self)
  1 def _words_only(self):
    ----> 2        text_mod = REGEX_REMOVE_PUNCTUATION.sub('', self.text)
      3        words_only = text_mod.split()


    AttributeError: 'list' object has no attribute 'text'

我是Python新手。这是导入过程中的问题还是其他问题?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您不会显示您创建函数_words_only()的位置/方式,但self参数表示您在类方法上对其进行了图案化。您显然将其用作独立功能,如下所示:

_words_only(list)

如果可以避免,我会建议你不要上课。写下你的函数:

def words_only(text):
    text_mod = REGEX_REMOVE_PUNCTUATION.sub('', text)
    words_only = text_mod.split()
    words_only = [word for word in words_only if len(word) > 1]
    return words_only

您还应该知道,您的函数旨在处理一个字符串,而不是它们的列表。此外,请勿使用内置名称(如list)作为变量名称 - 您需要在一两天内提出非常混乱的错误。使用更具信息性的名称或缩写lst

lines = [] 
...

some_words = words_only(lines[0])

由于您实际上想要使用行列表,因此请将修改后的函数应用于每个行:

filtered_lines = [ words_only(line) for line in lines ]

如果你想使用文件的全部内容,你会在文字中读到:

myfile = open(r"C:\Users\Luca\Desktop\Uni\Tesi\PythonTest\paolo.txt","r")
text = myfile.read()
myfile.close()
some_words = words_only(text)