У меня вопрос о домашнем задании. Я должен написать функцию «WordsByLine», которая должна подсчитывать частоту уникальных слов в строке в файле и печатать частоту уникальных слов в соответствующей строке в выходном файле. Мой профессор рассказал нам, как должен выглядеть выход. Например, если входной текстовый файл говорит:Как получить счетчик для печати частоты уникальных слов из каждой строки входного текстового файла в соответствующую строку в выходном текстовом файле?
one fish two fish red fish blue fish
(одна рыба две рыбы является первой линии красной рыбы голубой рыбы является второй линии.).
Выход должен выглядеть следующим образом :
two:1 one:1 fish:2 red:1 blue:1 fish:2
Первая строка в выводе является частота уникальных слов для первой линии, а затем то же самое для второй линии.
Вот мой код:
def wordsByLine(inFile, outFile):
from collections import Counter
outFile = open(outFile, 'w')
with open(inFile, 'r') as f:
freqs = Counter(f.readline().split())
outFile.write(str(freqs))
outFile.close()
print(wordsByLine('input.txt','output.txt'))
Но вот мой выход в текстовом файле. Она выводит только первую строку .:
Counter({'two':1, 'one':1, 'fish':2})
Как получить счетчик, чтобы пропустить строку и напечатать частоту уникальных слов для следующей строки (из следующей строки в файле входных данных)?
Не импортировать внутри функции. Это почти никогда не бывает хорошей идеей. –
Две заметки: 1) ваше задание состояло в том, чтобы написать функцию, которая подсчитывает слова * на строку *: ваша функция должна работать только на одной строке и печатать частоту. 2) вы не просматриваете все строки файла, но вы просто читаете одну строку. – sal
Каждый раз, когда вы открываете (outFile, 'w') ', он создает новый файл. Вы хотите 'open (outFile, 'wa')' добавлять в любой существующий файл. Было бы лучше просто открыть файл один раз и записать каждую последующую выходную строку. – martineau