2016-11-24 37 views
0

私はストップワードフィルタで遊んでいます 記事を含むファイルへのパスをスクリプトに送ります。 私はエラーを取得するしかし:エラー: 'file'オブジェクトに 'lower'という属性がありません

Traceback (most recent call last): 
File "stop2.py", line 17, in <module> 
print preprocess(sentence) 
File "stop2.py", line 10, in preprocess 
sentence = sentence.lower() 
AttributeError: 'file' object has no attribute 'lower' 

私のコードは、同様の下に取り付けられている。 引数

# -*- coding: utf-8 -*- 
from __future__ import division, unicode_literals 
import string 
import nltk 
from nltk.tokenize import RegexpTokenizer 
from nltk.corpus import stopwords 
import re 

def preprocess(sentence): 
    sentence = sentence.lower() 
    tokenizer = RegexpTokenizer(r'\w') 
    tokens = tokenizer.tokenize(sentence) 
    filtered_words = [w for w in tokens if not w in stopwords.words('english')] 
    return " ".join(filtered_words) 

sentence = open('pathtofile') 
print preprocess(sentence) 

答えて

1

sentence = open(...)としてファイルを渡す方法についての任意のアイデアは、その文がfileのインスタンスであることを意味します(open()メソッドから返されます)。

あなたがファイルの内容全体を持つようにしたいと思われるのに対し:sentence = open(...).read()

+0

私は理解しますが、このトレースエラーが解消されない.....トレースバック(最新の呼び出しの最後):ファイル「stop2.py」、 (filf_wordsのfのためのf.decode( 'utf-8'))ファイル "stop2.py"、行14、前処理の戻り値u "" "" " stop_py "、line 14、in return" "" "" ".join(f.decode( 'utf-8')for filtered_words)ファイル" /usr/lib/python2.7/encodings/utf_8 UnicodeDecodeError: 'utf8'コーデックは、位置0のバイト0xe2をデコードできません:データの予期しない終了(デコードの戻りコードcodecs.utf_8_decode(input、errors、True) – Silas

関連する問題