Как открыть и найти количество слов в файле со списком строк в разных текстовых файлах - PullRequest
0 голосов
/ 04 ноября 2018

Мне нужно создать функцию с именем processFiles, которая принимает список строк (список имен файлов) в качестве параметра. Функция должна открывать каждую печать: общее количество слов во всех файлах в списке имен файлов в одной строке и среднее количество слов в файле в следующей строке.

Я совершенно не понимаю, с чего начать. Вот что я должен сделать (это всего лишь пример):

список имен файлов равен ['input1.txt', 'input2.txt', 'input3.txt']

с указанными выше файлами, содержащими следующую информацию:

imput1.txt содержит слова Быстрая коричневая лиса input2.txt содержит слова, которые перепрыгнули input3.txt содержит слова ленивого пса

Ваша функция должна напечатать: 9 для всего слова 3 для среднего слова

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Вы можете последовательно прочитать все файлы и добавить их содержимое в список. Затем оцените количество слов в списке.

files = ['input1.txt', 'input2.txt', 'input3.txt]
l = []
num_files = 0;
for file in files:
    with open(file) as f:
        l.append(f.readlines())
        num_files += 1

num_of_words = len(str(l).split())
print(num_of_words)
avg = num_of_words/num_files     //average
0 голосов
/ 04 ноября 2018

Например, вы можете сделать это так:

files = ["foo.txt", "bar.txt"]

def proces_files(files):
    for f in files:
        print("Processing file {0:s}".format(f))
        with open(f, "r") as f:
            content = f.readlines()
            total = 0
            for index, line in enumerate(content):
                words = line.split(" ")
                total += len(words)
                print(
                    "Total number of words: {0:d} in line {1:d}".format(
                        len(words),
                        index + 1,
                    )
                )

            avg = (total / len(content))
            print("Average quantity of words per line {0:d}".format(avg))

proces_files(files)

Сначала вы должны прочитать каждый файл, представленный в списке

  1. Для каждого файла читать его строки с помощью функции readlines()
  2. Для каждой строки рассчитывать длину слова, разбивая строку на пробел split(" ")
  3. Вывести количество слов и в какой строке это (используйте enumerate() для отслеживания индекса)
  4. Увеличение общего количества слов
  5. Подсчет и печать в среднем
  6. Следующая итерация

Пример вывода:

Processing file foo.txt
Total number of words: 3 in line 1
Total number of words: 2 in line 2
Total number of words: 4 in line 3
Average quantity of words per line 3
Processing file bar.txt
Total number of words: 4 in line 1
Total number of words: 2 in line 2
Average quantity of words per line 3
...