
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.
- Распечатать второй и третий столбец
- КОНЕЦ. Вывести общее количество найденных вхождений.