如何將文字檔案中的單字與另一個單字進行比較?

如何將文字檔案中的單字與另一個單字進行比較?
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.
  • 列印第二列和第三列
  • 結尾。列印找到的總出現次數。

相關內容