2017-12-12 16 views
1

Python 3でプログラムを作成して、特定の単語がtxtファイルに何回現れているかを調べ、これらの値を持つExcelテーブルを作成したいと考えています。 私はこの機能を作ったが、最後に機能を呼び出して入力を入れると、プログラムは機能しません。この文を出演:インデント解除は、今、私は私が見てみたいtxtファイルと出力と同様txtファイルの単語を見つけるPython 3

wordcount("aaa.txt" , 'word') 

を見つけるために単語と機能を思い出してみてください

def wordcount(filename, listwords): 
    try: 

    file = open(filename, "r") 

    read = file.readlines() 
    file.close() 
    for x in listwords: 
     y = x.lower() 
     counter = 0 
     for z in read: 
      line = z.split() 
      for ss in line: 
       l = ss.lower() 
      if y == l: 
       counter += 1 

     print(y , counter)  

任意の外側のインデントレベルと一致していません

word 4  

みんなありがとう!

+1

インデントエラーがあります。特に、 'try'ステートメントはそれに続くインデントされたブロックを必要とします。構文ヒントを得るには、[pycharm](https://www.jetbrains.com/pycharm/download/)などのIDEを使用することを検討してください。 – Arne

+0

'word'を 'wordcount(" aaa.txt "、[" word "])'というリストとして渡す必要があります。また、@ArneRecknagelは、 'try'ブロックで字下げを修正し、' except'ブロックを追加する必要があると言いました。 – mij

答えて

0

ここでは、特定の単語がテキストファイル内にある時間の数を見つけるために使用できる例を示します。

def searching(filename,word): 
    counter = 0 
    with open(filename) as f: 
     for line in f: 
      if word in line: 
       print(word) 
       counter += 1 
    return counter 

x = searching("filename","wordtofind") 
print(x) 

出力は、検索しようとする単語と発生する時間の数になります。できるだけ短く

0

def wordcount(filename, listwords): 
    with open(filename) as file_object: 
     file_text = file_object.read() 
     return {word: file_text.count(word) for word in listwords} 

for word, count in wordcount('aaa.txt', ['a', 'list', 'of', 'words']).items(): 
    print("Count of {}: {}".format(word, count)) 

が実際のリストとしてlistwofwordsを渡すことについて、バックMIJさんのコメントへの行き方:あなたがリストを想定したコードに文字列を渡すと、Pythonはリストとして文字列を解釈しますこの動作が不慣れな場合は混乱する可能性があります。

関連する問題