2017-12-05 20 views
-1

私は映画のトランスクリプトからストップワードを削除する必要があります。ストップワードとトランスクリプトは別々のテキストファイルにあります。問題を取り除くストップワードPython

def stopWords(): 
    fi = open('stoplist.txt', 'r') 
    stopWords = [] 
    for line in fi: 
     line = line.strip() 
     stopWords.append(line) 
    fi.close 
    return None 

def readText(): 
    stopWords() 
    fi = open('holy-grail.txt', 'r') 
    removeStopWords = ''.join(fi) 
    for word in stopWords: 
     removeStopWords = removeStopWords.replace(" " + word + " ", " ") 
    transcript = [] 
    for line in fi: 
     line = line.strip().lower().split(':') 
     transcript.append(line) 
    fi.close 
    return transcript 

私はこのコードを実行すると、私はエラーメッセージが表示されます。 トレースバック(最新の呼び出しの最後): ファイル ""、1行目、 でREADTEXT() ファイル「C:\ユーザーはアダムSitzmannを\をストップワードで単語のREADTEXT で\デスクトップ\ hw9 \ hw9.py」、行14、: 例外TypeError: '関数' オブジェクトここ

+1

underscored_namesを使用するようにpythonで一般的です:'あなたが関数オブジェクトに反復...そして、あなたの関数の結果を使用していない... –

+0

ます'stopwords()'を呼び出す必要があります。なぜあなたは「ストップワード」に「fi」を返さないのですか?つまり、関数が終了するとリストは破棄されます –

答えて

0

を反復可能なされていません:for word in stopWordsあなたが機能を反復処理してみてください。あなたのコードに命名の衝突があります。 stopWordsは、関数と変数の両方です。変数に異なる名前を付けます。

EDIT: あなたはPythonに慣れていないので、少し改善が必要です: 1. return Noneを書く必要はありません。 returnのない関数は常にNoneを与えます。 2. returnを使用して、stopWords()の出力をさらに処理する機能があることに気付く価値があると述べています。 3.命名規則:それはストップワードで単語を `代わりcamelCase

関連する問題