2017-10-21 3 views
0

現在、リストを見て、単語を繰り返してグループ化して実行しますが、実行するたびに[]となってしまいます。ここでは、ファイルを読み込み、その文とそのリストのスニペットを作成するコードを示します。パッケージを使用せずに関数で文章を作成する

def import_file(text_file): 
    wordcounts = [] 
    with open(text_file, encoding = "utf-8") as f: 
     pride_text = f.read() 
     sentences = pride_text.split(" ") 
     return sentences 





def create_sentance(sentance): 
    sentence_list=[] 
    my_sentence="" 
    for character in sentance: 
     if character=='.' or character=='?' or character=='!': 
      sentence_list.append(my_sentence) 
      my_sentence="" 
     else: 
      my_sentence=my_sentence + character 
     return sentence_list 

Preview of List 私の関数の呼び出し

pride=import_file("pride.txt") 
pride=remove_abbreviations_and_punctuation(pride) 
pride=create_sentance(pride) 
print(pride) 
+2

'create_sentance'の呼び出し例を含めることができますか? (それは途方もない文章です)。 –

+0

私はそれを書いた後にそれを実現しました:P。上記のコードに含まれています。 –

+0

Sidenote:Natural Language Toolkitの 'nltk'パッケージをチェックしてみてください。あなたがやっていることを助けることができます。 – MikeTwo

答えて

0

あなたreturn sentence_listはそれがあるべきより1がさらにインデントされます。 forの最初の反復後、else条件が実行され、ifでない場合、関数は[ ]に初期化されたsentence_listを返します。いずれにしても、sentenceの長さが20文字の場合、forは、returnの呼び出しがある場所で1回だけ実行されます。あなたのリターンがforループの内側にあるので

def create_sentance(sentance): 
    sentence_list=[] 
    my_sentence="" 

    for character in sentance: 
     if character=='.' or character=='?' or character=='!': 
      sentence_list.append(my_sentence) 
      my_sentence="" 
     else: 
      # do you not want this in 'sentence_list'? 
      my_sentence=my_sentence + character 
    return sentence_list 
+0

私は他の人のsentence_listに何もしたくないのです。 ?または!到達した。 –

+0

@ L.Brawdyまあ、少なくともそれは解決されました。 – pstatix

0

あなたの関数は空のリストを返している理由は次のとおりです。

は、次のように変更してください。さらに、あなたのリストの各要素は単語なので、「文字」は実際には単語です。このプログラムは動作します:

def create_sentance(sentance): 
    sentence_list=[] 
    my_sentence="" 
    for character in sentance: 
     print character 
     if '.' in character or '?' in character or '!' in character: 
      sentence_list.append(my_sentence + ' ' + character) 
      my_sentence="" 
     else: 
      my_sentence=my_sentence + ' ' + character 
    return sentence_list 
create_sentance(['I','will','go','to','the','park.','Ok?']) 

各文字は単語であるため、==の代わりに "in"を使用する必要があります。これを見るために "文字"を印刷してみてください。上記のプログラムが動作し、結果を返します。

[' I will go to the park.', 'Ok?'] 

あなたが意図していたものです。

+0

pstatixの答えは正確ではありません。なぜなら、 'in'コマンドが使用されていないので、正しいリストを返さないからです。 – jaguar

関連する問題