
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 f
消耗文件行相同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
如果在該特定行中找到,這應該會列印整行。然後我們將行分成列並相應地列印列
然而,對於這種情況,使用awk
可能比 python 更合適。
awk '/President/{c++; print $2,$3 } END { printf("There were %d Presidents found\n", c)}' file.txt
- 尋找總統
- 增加計數器 C.
- 列印第二列和第三列
- 結尾。列印找到的總出現次數。