2017-02-14 11 views
0

nltkを使っていくつかのデータとフォーマットを解析しようとしていますが、関数の反復で複数の変数に複数の戻り値を割り当てることはできません(下記のdef preprocess関数を参照してください)。大きなデバッグですが、意図的にそこにあるPythonの壁に頭を打っているようです。一度に1つずつ、複数の戻り変数を割り当てる?

def get_7text(): 
    with open('parsed_text/Larrys Pizza & Sports Parlor_text.csv','r') as file: 
     reader = csv.reader(file) 
     dict = [row for row in reader] 
    file.close() 

    my_dict = [l[0] for l in dict] 
    text= my_dict[0] 
    new_dict=ast.literal_eval(text) 
    for k,v in new_dict.items(): 
     exec(k + '=v') 
    return Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday 

def preprocess(): 
    for day in Days: 
     day = str(day) 
     day = sent_tokenize(day) 
     day = [word_tokenize(s.lower()) for s in day] 
     day = [pos_tag(s) for s in day] 
     return day 

#code here 
Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday = get_7text() 
Days=[Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday] 
Days=preprocess() 

Get7text()は、正常に割り当てることができる7つの文字列を返します。私は最初に7つのキーの辞書を返すようにしていましたが、NLTKのPOSタギングなどのためにフォーマットするのは面倒でした。

これは問題です。前処理を実行するたびに、プログラムは最初の項目をリストに残し、残りの項目は忘れてしまいます。6.返された各出力をDaysという変数のリストに割り当てるように強制しようとしていますが、無駄です。私はまた、AFTER Days = preprocess()、Daysが最初の要素を除くすべてを失うことに気付きました(火曜日から日曜日は1文字列の空のリストです)。しかし、Days [3]またはDays [5]は、予想されるデータを正しく出力します。

私は、より良い表現方法があると予想しています。とにかくそれを言及するオンラインの投稿はなく、とにかくやり方はスケッチのように思えた。

+0

なぜ「返却日」ですか?それは最初の要素がforループに入っているので、最初の要素を処理した後に戻ります。 –

+0

私はあなたの意見を見ます。ありがとう! – wip

答えて

1

「復帰」と表示されるたびに、「ああ、戻って、コードで完了しなければならない。今すぐ機能を停止する」したがって、最初の反復後に停止します。代わりに、何を行う必要がある。当然のことながら

def preprocess(): 
     retList = [] 
     for day in Days: 
      day = str(day) 
      day = sent_tokenize(day) 
      day = [word_tokenize(s.lower()) for s in day] 
      day = [pos_tag(s) for s in day] 
      retList.append(day) 
     return (retList) 

、これが動作しない場合は、私が何かを逃したし、我々は損失の両方をしています。

+0

非常に簡単な先端。解決いただきありがとうございます! – wip

+0

引用符を盗むのは気にしないでくださいが、今から関数を教えるときには引用符になります: ''ああ、戻って、あなたのコードでやる必要があります。 ; P – alvas

+0

ところで、代わりにこのイディオムを使用してください: 'tag_type = – alvas

関連する問題