сортировка фраз по частоте гласных букв
по разным признакам - например по числу гласных букв
то есть выводит группы по 10 фраз в которых частота гласных букв достаточно близка
import os
from collections import defaultdict
def count_vowels(phrase):
vowels = 'аеёиоуыэюяАЕЁИОУЫЭЮЯ'
return sum(1 for char in phrase if char in vowels)
def group_phrases_by_vowel_frequency(file_paths):
phrases = []
# Чтение файлов и сбор фраз
for file_path in file_paths:
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
phrases.extend(text.split('.')) # Разделяем текст на фразы по точкам
# Убираем лишние пробелы и фильтруем пустые фразы
phrases = [phrase.strip() for phrase in phrases if phrase.strip()]
# Словарь для группировки фраз
groups = defaultdict(list)
# Подсчет гласных и группировка
for phrase in phrases:
vowel_count = count_vowels(phrase)
groups[vowel_count].append(phrase)
# Формирование итогового результата
result = []
for vowel_count, group in groups.items():
# Разделяем на подгруппы по 10 фраз
for i in range(0, len(group), 10):
result.append(group[i:i + 10])
return result
# Пример использования
file_paths = ['file1.txt', 'file2.txt'] # файлы для поиска фраз
grouped_phrases = group_phrases_by_vowel_frequency(file_paths)
# Вывод результата
for idx, group in enumerate(grouped_phrases):
print(f"Группа {idx + 1}:")
for phrase in group:
print(f"- {phrase.strip()}")
print()
**
Если в конце фразы нет точки, то для разделения фраз можно использовать и перевод строки (\n),
особенно если в файле каждая фраза записана с новой строки.
Вот как можно доработать функцию, чтобы разделять текст и по точкам, и по переводу строки:
import os
from collections import defaultdict
def count_vowels(phrase):
vowels = 'аеёиоуыэюяАЕЁИОУЫЭЮЯ'
return sum(1 for char in phrase if char in vowels)
def split_text_into_phrases(text):
parts = text.split('.')
phrases = []
for part in parts:
subparts = part.split('\n')
for subpart in subparts:
phrase = subpart.strip()
if phrase:
phrases.append(phrase)
return phrases
def group_phrases_by_vowel_frequency(file_paths):
phrases = []
for file_path in file_paths:
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
phrases.extend(split_text_into_phrases(text))
groups = defaultdict(list)
for phrase in phrases:
vowel_count = count_vowels(phrase)
groups[vowel_count].append(phrase)
result = []
for vowel_count, group in groups.items():
for i in range(0, len(group), 10):
result.append(group[i:i + 10])
return result
# Пример использования
file_paths = ['file1.txt', 'file2.txt'] # тексты
grouped_phrases = group_phrases_by_vowel_frequency(file_paths)
for idx, group in enumerate(grouped_phrases):
print(f"Группа {idx + 1}:")
for phrase in group:
print(f"- {phrase.strip()}")
print()
Свидетельство о публикации №125060106606