テキストファイルの単語を他の単語と比較するには?

テキストファイルの単語を他の単語と比較するには?
with open("file.txt") as f:
     for line in f:
         for word in f:
             if word == 'President':
                print('a')

テキストファイルに「President」という単語が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:次のとおりです。いいえ繰り返し「性格」1行にありますが、for line in fファイル行を使用するのと同じです。f

1行に単語が含まれていることを確認するには、次の手順を実行する'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を使用する方がPythonよりも適している可能性があります。

awk '/President/{c++; print $2,$3 } END { printf("There were %d Presidents found\n", c)}' file.txt 
  • 大統領を探して
  • 増分カウンターC.
  • 2番目と3番目の列を印刷します。
  • 終わり。見つかった発生の総数を印刷します。

関連情報