Разделение / удаление может быть выполнено с помощью re
gex, подсчет может быть выполнен с помощью collections.Counter.most_common()
в 2 строках, например:
t =("Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
"Aliquam sem odio, varius nec aliquam nec, tempor commodo "
"ante. Pellentesque sit amet augue vel ante dictum placerat"
" ut ut sapien. Proin maximus eu diam in posuere. "
"Suspendisse in lectus in lectus finibus auctor. Nam sed "
"porttitor arcu. Vestibulum augue odio, posuere quis libero"
" sed, pharetra sollicitudin est. Donec sit amet nunc eu "
"nisi malesuada elementum id ut purus.Nunc sit amet % massa"
" rhoncus, venenatis eros sit amet, ornare augue. Nunc a mi"
" sed est tincidunt facilisis at nec diam. Donec nec ex lorem."
" Morbi vitae diam tincidunt, dignissim arcu ut, facilisis "
"nisi. Maecenas non felis #ullamcorper, viverra augue id, "
"consequat_nunc. Suspendisse potenti. Proin tempor, sapien "
"ut ornare placerat, sapien mauris luctus sapien, eget aliquam"
" turpis urna at quam. Sed a&eros vel@ ante vestibulum vulputate."
" Suspendisse vitae vulputate velit. Suspendisse! ligula nisl, "
"semper ut sodales et, ultricies porttitor felis. Nunc ac mattis"
" erat, aliquet pretium risus. Nullam quis congue lacus, et mollis"
" nulla. Nunc laoreet in nisi sit amet facili*sis. Cras rutrum justo"
" ut eros mollis volutpat. Sed quis mi nunc. Nunc sed bibendum nibh,"
" quis bibendum tortor.")
from collections import Counter
import re
c = Counter((w for w in re.split("[ .,]",t) if re.match(r"^[a-zA-Z]+$", w)))
print([w for w,cnt in c.most_common() if cnt < 3][-20:])
, что дает:
['semper', 'sodales', 'ultricies', 'ac', 'mattis', 'erat', 'aliquet', 'pretium',
'risus', 'Nullam', 'congue', 'lacus', 'nulla', 'laoreet', 'Cras', 'rutrum', 'justo',
'volutpat', 'nibh', 'tortor']
Это 20 слов, встречающихся 1 раз в обратном порядке .
Всего один раз встречается следующее:
print([w for w,cnt in c.most_common() if cnt == number])
['Lorem', 'ipsum', 'dolor', 'consectetur', 'adipiscing', 'elit', 'Aliquam',
'sem', 'varius', 'commodo', 'Pellentesque', 'vel', 'dictum', 'maximus',
'finibus', 'auctor', 'Nam', 'Vestibulum', 'libero', 'pharetra',
'sollicitudin', 'malesuada', 'elementum', 'purus', 'massa', 'rhoncus',
'venenatis', 'a', 'ex', 'lorem', 'Morbi', 'dignissim', 'Maecenas', 'non',
'viverra', 'potenti', 'mauris', 'luctus', 'eget', 'turpis', 'urna', 'quam',
'vestibulum', 'velit', 'ligula', 'nisl', 'semper', 'sodales', 'ultricies',
'ac', 'mattis', 'erat', 'aliquet', 'pretium', 'risus', 'Nullam', 'congue',
'lacus', 'nulla', 'laoreet', 'Cras', 'rutrum', 'justo', 'volutpat', 'nibh',
'tortor']
Сайт, кажется, хочет специальная часть тех, которые не включают в себя «первый-первый» или «последний-первый» и не отсортированы по алфавиту - поэтому, чтобы исправить вашу «задачу», вам нужно уточнить, какие критерии они используют, чтобы выбрать из приведенного выше списка.