Рассмотрим работу со строками на небольшом примере, который будет представлять программу подсчета слов.
Пусть весь код программы будет выглядеть следующим образом:
| 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 .......................