テキスト ファイルの単語を別の単語と比較するにはどうすればよいでしょうか?

テキスト ファイルの単語を別の単語と比較するにはどうすればよいでしょうか?
with open("file.txt") as f:
     for line in f:
         for word in f:
             if word == 'President':
                print('a')

テキストファイル内に「大統領」という単語が4回あるのに、何も印刷されません。どうすればチェックできますか?

私のテキストファイルは次のようになります:

President Kacey Genicke

President Alexandra Twomey

President Aldous Graddell

President Bernie Jenicek

Officer Cyrill Vernazza

Officer Sutton Spier

Officer Isabella Seer

Officer Abbey Holdforth

Faculty Officer Lennie Lomaz

Faculty Officer Brant Howle

Faculty Officer Dionysus Summerbell

Faculty Officer Calhoun Duguid

Faculty Officer Tremain Arnaez

Faculty Officer Mirabella Trathan

Faculty Officer Dex Darcy

出力は次のようになります。

   Kacey Genicke

   Alexandra Twomey

   Aldous Graddell

   Bernie Jenicek

私はこれをやってみました:

with open("file.txt") as f:
    for line in f:
            if 'President' in line:
                print(line[10])

これにより、各大統領の最初の文字がわかります。

答え1

内側のループfor word in f:ない繰り返し「言葉」for line in f1行で実行しますが、ファイルの行を消費するのと同じ動作をしますf

'President'単語が行内に含まれているかどうかを確認するには、次の操作が必要です。

with open("file.txt") as f:
     for line in f:
         if 'President' in line:
             print('a')

President接頭辞を除いた単語で始まる行のみを印刷するには:

with open("file.txt") as f:
     for line in f:
         if line.startswith('President'):
             print(line.replace('President', '').strip())

答え2

まず、インデントの問題だと思います。次のことを試してください。

with open('file.txt') as f:
    count = 0 
    for line in f:
        columns = line.split() 
        if len(columns) > 1 and 'President' in line:  
            print(columns[1], columns[2])
            count += 1
    print("There are ", count, "Presidents found")

特定の行に見つかった場合は、行全体を印刷する必要がありますPresident。次に、行を列に分割し、それに応じて列を印刷します。

ただし、このような場合には、 を使用する方がawkpython よりもはるかに適切である可能性があります。

awk '/President/{c++; print $2,$3 } END { printf("There were %d Presidents found\n", c)}' file.txt 
  • 大統領を探す
  • カウンターcを増分します。
  • 2列目と3列目を印刷する
  • 終了。見つかった出現回数の合計を出力します。

関連情報