Программа подсчета слов

Поділитись

Рассмотрим работу со строками на небольшом примере, который будет представлять программу подсчета слов.

Пусть весь код программы будет выглядеть следующим образом:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#! Программа подсчета слов в файле

import os  def get_words(filename):
 with open(filename, encoding="utf8") as file:

text = file.read()
text = text.replace("\n", " ")
text = text.replace(",", "").replace(".", "").replace("?", "").replace("!", "")

text = text.lower()

words = text.split()
words.sort()

return words 
 def get_words_dict(words):
words_dict = dict() 

for word in words:
if word in words_dict:

words_dict[word] = words_dict[word] + 1else:
words_dict[word] = 1return words_dict 


 def main():
filename = input("Введите путь к файлу: ")

if not os.path.exists(filename):
print("Указанный файл не существует")
else:
words = get_words(filename)
words_dict = get_words_dict(words)
print("Кол-во слов: %d" % len(words))

print("Кол-во уникальных слов: %d" % len(words_dict))
print("Все использованные слова:")

for word in words_dict:
print(word.ljust(20), words_dict[word]) 
 if __name__ == "__main__":
main()

Здесь в функции get_words() производится начальная сегментация текста на слова. Пи этом все пунктуационные знаки удаляются, а переводы стоки заменяется на пробелы. Затем происходит разбитие текста на слова. В качестве разделителя по умолчанию применяется пробел.

Далее в функции get_words_dict() получаем словарь из слов, где ключ — это уникальное слово, а значение — количество вхождений данного слова в тексте.

В функции main осуществляется ввод пути к файлу и вызов выше определенных функций, а также вывод все статистики.

Консольный вывод программы:

Введите путь к файлу: C:\SomeDir\hello.txt
Кол-во слов: 66
Кол-во уникальных слов: 54
Все использованные слова:
благодетель          2
в                    1
всего                1
вы                   1
горчичным            1
ее                   1
ежели                3
еще                  1
.......................

Поділитись