2016-07-06 9 views
0

私はnltkパッケージからVaderを使って作業しています。 私はベイダーのチュートリアル以下の私のデータセットをインポートした:AttributeError: 'list'オブジェクトに 'text'属性がありません

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 

しかし、私は「言葉だけ」機能Iを使用しようとすると、このエラーが発生する

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

クラスを共有できますか? words_only関数の引数としてlistを送信しています。私はあなたがここにリストではない文字列を送るべきだと思います。 –

+0

'_words_only'はクラスの一部ですか? –

答えて

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のような組み込みの名前を使用しないでください。あなたは1日か2日で非常に混乱したエラーを求めています。あなたが実際に行のリストで動作するようにしたいので、このようなそれぞれに改訂された関数を適用する、

lines = [] 
... 

some_words = words_only(lines[0]) 

:より有益な名前、またはlstのような略語を使用し

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) 
+0

この機能は本当にうまく機能します!しかし、私のデータセットはつぶやきのリストです。あなたが結果として提案したインポートプロセスを使用する場合、私は単語の大きなリストを1つだけ持っています。つぶやきを分離しておき、それぞれをきれいにしたいと思います。インポートプロセスを使用して、forサイクルをwords_only関数と組み合わせることは、解決策になりますか? –

+0

あなたは何をしているのか分かっているので、十分に簡単です!答えを編集しました。 – alexis

+0

OK、それは完璧に動作します!ありがとうございました! –

関連する問題