2017-05-07 6 views
1

コンコーダンスプログラムを作成する。Pythonどのような単語がある文章を印刷するには?

"こんにちは。私の名前はネイサンです。私はPythonの助けが必要です。私は非常に混乱しており、助けに感謝しています。"と私は言っています。

各単語がどの文章から来るのかを印刷します。私はすでにそれがとして表示されるので、それは、から来て、私は文番号(複数可)を必要とすることは、各単語が表示された合計回数をカウントすることを完了し、その隣にいる:「」と

a. word {word appearance count:sentence number} 

リストの順序として機能します(番号付きリストのように、文字で)。あなたは完全な文章を見たとき、あなただけの'.'に分割されている、あなたのコードで

word_counter = {} 
sent_num = {} 
linenum = 0 
wordnum = 0 
counter = 0 

#not working 
for word in f.lower().split('.'): 
    if not word in sent_num: 
     sent_num[word] = [] 
    sent_num[word].append(f.find(wordnum)) 


#working correctly 
for word in f.lower().split(): 
if not word in word_counter: 
     word_counter[word] = [] 
     #if the word isn't listed yet, adds it 
    word_counter[word].append(linenum) 

for key in sorted(word_counter): 
    counter += 1 
    print (counter, key, len(word_counter[key]), len(sent_num[key])) 
+0

'linenum'は常に '0' –

+0

ですこれは広範な質問です。完全に書き直すことなく答えるのは難しいです。私は答えが将来の世代にとって有益だとは思わない。質問をより細かいより小さなチャンクに分割し、[mcve]の作成方法を読んで、新しい質問をしてください。 –

答えて

0

それはその文では、各センテンスの上に各単語を反復してマッピングした辞書を作成するために非常に簡単です{word: [sentence, ...]}

In [1]: 
d = {} 
for i, sent in enumerate(f.lower().split('. ')): 
    for w in sent.strip().split(): 
     d.setdefault(w, []).append(i) 
d 

Out[1]: 
{'am': [2], 
'and': [1, 2], 
'any': [2], 
'appreciated.': [2], 
'confused': [2], 
'hello': [0], 
'help': [1, 2], 
...} 

リストは、単語のすべての出現その後、あなただけの数を取得することができますです考えますコールlen()によって、例えば:あなたのコードが間違ってたくさんがあるとして

In [2]: 
len(d['help']) 

Out[2]: 
2 
+0

私はダウン投票している人には問題はありませんが、もしそうしたらメッセージを残してください。フィードバックなしで改善するのは難しいです。 – AChampion

+0

これは主に機能しました!どうもありがとうございます!私が今問題を抱えているのは、「テスト」の後の期間を削除できないということだけです。私のコードを壊している。どうやら私は辞書から( '。')取り除くことはできませんか?それは「テスト」と「テスト」を数えています。 2つの異なる言葉として。 – Ember

+0

'split( '。')'(ピリオドの後ろに空白を入れないでください)、余分なスペースを 'strip()'する必要があります。 – AChampion

0

:最初の文は

a. help {2:2,3} 

だろうからの例では、ここで私が現在持っているコードです。あなたが見て、カウントしたいのかに応じて、これらの方法に沿って

for sentence in f.split('.'): 
    for word in sentence.lower().split(): 
     if not word in sent_num: 
      sent_num[word] = [] 
     sent_num[word].append(f.find(wordnum)) 

か何か:あなたはその後、単語に各センテンスを分割する必要があります。

+0

彼らはそれが文中にあるかどうかを知りたいだけです。 –

関連する問題