avp26/ u4/word_count.py

23 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import re
from collections import Counter
def count_words(text: str) -> dict[str, int]:
# 1.Приводим весь текст до нижнього регістру \\\ Celý text prepíšeme do malých písmen
text = text.lower
# 2. Шукаємо всі слова: буквено-цифрові символи які можуть мати апостроф у середині (наприклад, don't або 'heslo')
# 2. Hľadáme všetky slová: alfanumerické znaky, ktoré môžu obsahovať apostrof uprostred (napríklad don't alebo ‚heslo‘)
words = re.findall(r"[a-z0-9áäčďéíľňóôŕšťúýž]+(?:'[a-z0-9áäčďéíľňóôŕšťúýž]+)?", text)
# 3. Рахуємо кількість входжень кожного слова /// Spočítame počet výskytov každého slova
return dict(Counter(words))
# "[a-z0-9áäčďéíľňóôŕšťúýž] шукає послідовність з однієї або більше букв (усі словацькі символи включно) чи цифр.
# hľadá reťazec pozostávajúci z jedného alebo viacerých písmen (vrátane všetkých slovenských znakov) alebo číslic.
# (?: необов'язкова група (може зустрічатися 0 або 1 раз). /// nevyhnutná skupina (môže sa vyskytnúť 0 alebo 1-krát).
# '[a-z0-9áäčďéíľňóôŕšťúýž]+ — апостроф, за яким обов'язково йдуть букви або цифри. Це гарантує, що апостроф враховується лише всередині скорочення (наприклад, don't), але ігнорується, якщо це одинарна лапка навколо слова (наприклад, 'HESLO').
# '[a-z0-9áäčďéíľňóôŕšťúýž]+ — apostrof, za ktorým musia nasledovať písmená alebo číslice. Tým sa zaručí, že apostrof sa zohľadní iba vnútri skratky (napríklad don't), ale ignoruje sa, ak ide o jednoduché úvodzovky okolo slova (napríklad 'HESLO').