readline() не читает первую строку (python)
Мне нужно написать программу, которая считывает текст из файла (в файле может быть больше одной строки) и выводит самое частое слово в этом тексте и через пробел то, сколько раз оно встретилось. При решении этой задачи столкнулся с проблемой. Я читаю файл построчно с помощью readline(), но почему-то первая строка не считывается. Если в файле одна строка, то программа выводит пустой словарь. Если более, то выводит словарь с данными, но пропускает первую строку. Почему?
data = {}
with open("input.txt") as f1:
for line in f1:
line = f1.readline().lower().split()
set_line = set(line)
for i in set_line:
if i in line:
data[i] = line.count(i)
print(data)
Ответы (2 шт):
Попробуйте такой вариант, через read()
with open("text.txt") as f:
doc = f.read()
words_dict= {}
for i in doc.split('\n'):
for j in i.split():
words_dict[j] = words_dict.get(j,0) + 1
lst = list(words_dict.items())
lst = sorted(lst, key=lambda word: word[1], reverse=True)
print(*lst[0])
В вашем коде сам цикл for line in f1: читает файл построчно. В цикле вы игнорируете строку, которую он дает, и самостоятельно читаете строку еще раз, ее значение уже используете. Получается, что вы игнорируете все нечетные строки (первую, третью, пятую и т.д.) Нужно избавиться от повторного чтения строки, вместо этого работать с той строкой, которую вам дает цикл:
data = {}
with open("input.txt") as f1:
for line in f1:
line = line.lower().split()
set_line = set(line)
for i in set_line:
if i in line:
data[i] = line.count(i)
print(data)