Подсчет и сортировка количества букв в тексте
Требуется подсчитать количество букв, результат отсортировать по частоте встречаемости букв (по возрастанию или убыванию). Регистр символов имеет значение.
Во кусок кода, а дальше ступор... Распаковка архива, чтение файла и почти сортировка букв (нужно дернуть только буквы RU и EN алфавита и отсортировать их с подсчетом)
import zipfile
from collections import Counter
archive = zipfile.ZipFile('voyna-i-mir.zip', 'r')
archive.extractall()
archive.close()
fin = open('voyna-i-mir.txt', 'r', encoding='utf8')
data = fin.read().replace(' ', '')
counts = Counter(data)
for i in counts:
print(i, counts[i])
Ответы (2 шт):
Автор решения: RuslanZanevskiy
→ Ссылка
from string import ascii_letters
ru_symbols = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
ru_symbols += ru_symbols.upper()
symbols = []
for i in counts:
if i in ru_symbols or i in ascii_letters:
symbols.append((count[i], i))
symbols.sort(reverse=True)
Автор решения: 3Vw
→ Ссылка
import re
import zipfile
from collections import Counter
archive = zipfile.ZipFile('voyna-i-mir.zip', 'r')
archive.extractall()
archive.close()
pattern = r'[А-Яа-яA-Za-z]'
with open('voyna-i-mir.txt', 'r', encoding='utf8') as book:
book_txt = book.read()
letters = re.findall(pattern, book_txt, flags=re.MULTILINE)
counts = Counter(letters)
for i in counts:
print(i, counts[i])
Подправил, как теперь отсортировать вывод по возрастанию или убыванию ?