そのため、ファイル名を入力し、次に任意の単語を入力するように要求するプログラムを作成する必要があります。これにより、別のテキスト ファイルに含まれる単語数が出力されます。
これが私がこれまでに持っているものです:
fname= raw_input("Enter File Name: ")
s= raw_input("enter substring: ")
with open(fname, 'r') as f:
// read the file into a list
// split each line into words
// compare each word with the desired word and count
import string
fname = raw_input("Enter File Name: ")
s = raw_input("enter substring: ")
fp = open(fname, 'rt')
L = fp.readlines() # read all lines into a list "L"
c = 0 # word count
for i in L:
arr = string.split(i) # split on whitespace
for word in arr:
if word == s:
c += 1
print "There are %d occurrances of the word \"%s\" in file \"%s\"\n" % (c, s, fname)
もう1行:
print f.read().count(s)
これまでのところ、良いスタートです。実際、私が自分で問題を解決していたとしたら、それは私が最初に考えたであろうこととほぼ同じです。これはおそらく宿題なので、コードを書くつもりはありませんが、次に何をすべきかを教えていただければ幸いです。
まず、ファイルを検索可能な文字列に読み込む必要があります。f.read()
おそらく、これを一度に取得するために使用したいと思うでしょう。または、一度に 1 行ずつ処理することもできますが、検索文字列が複数の行にまたがる場合はうまくいかないと思います。
検索する前に、文字列の「クリーニング」を行う必要がある場合があります (空白、大文字、句読点などの正規化など)。これがどれだけ必要かは、ファイルの内容が正確に何であるか、および検索をどれだけ厳密に機能させたいかによって異なります。"ill" を検索する場合、"I'll" と一致させますか? "hyphen-\nated" に一致する "hyphenated" はどうですか (テキスト ファイルに単語を 2 行に分割するハイフンがある場合)。
きれいな文字列を取得したら、部分文字列を検索する方法を決定する必要があります。str
クラスのメソッド(find
または など) を使用するか、より高度なテキスト検索を行うcount
ようなモジュールを使用できます。re
ドキュメントを読んで、最も適切と思われるものを選択してください。