我正在使用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新手。这是导入过程中的问题还是其他问题?谢谢你的帮助。
答案 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)