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
特定の行にある場合は、行全体を印刷する必要があります。次に、行を列に分割し、それに応じて列を印刷します。
ただし、この場合、awk
Pythonを使用する方がPythonよりも適している可能性があります。
awk '/President/{c++; print $2,$3 } END { printf("There were %d Presidents found\n", c)}' file.txt
- 大統領を探して
- 増分カウンターC.
- 2番目と3番目の列を印刷します。
- 終わり。見つかった発生の総数を印刷します。