Attachment 'anna.py'

Download

   1 #!/usr/bin/env python
   2 # coding: utf
   3 '''
   4 Рассмотрим текст романа Л. Н. Толстого «Анна Каренина» (следует использовать электронную версию романа, находящуюся по адресу http://ejudge.ru/study/anna.txt; есть на этом вики). Словоформой назовем последовательность латинских или русских букв. Словоформы ограничиваются символами, не являющимися латинскими или русскими буквами. В словоформах не различаются заглавные и строчные буквы и буквы е и ё. Например, Осел и осёл — это одна словоформа. Выпишите 10 наиболее часто встречающихся словоформ длиной 4 буквы в порядке уменьшения частоты их появления и для каждой словоформы укажите частоту ее появления. Словоформы должны быть выписаны строчными буквами, с буквой ё, преобразованной к букве е. Если несколько словоформ имеют равную частоту появления, они должны быть упорядочены по алфавиту (причем русские буквы идут раньше латинских). Обоснуйте свой ответ и приложите исходные тексты (например, тексты программ или электронные таблицы), использованные для получения ответа.
   5 '''
   6 
   7 import re
   8 
   9 reSplit=re.compile(u"[^a-zа-я]+")
  10 def cmpv(kv1,kv2):
  11     return cmp(kv1[1],kv2[1]) or cmp(ord(kv1[0][0])/128,ord(kv2[0][0])/128) or cmp(kv2[0],kv1[0])
  12 
  13 W,N,Voc=4,10,{}
  14 for w in reSplit.split(file("anna.txt").read().decode("utf8").lower().replace(u"ё",u"е")):
  15     if len(w)==W:
  16         Voc[w]=Voc.setdefault(w,0)+1
  17 VK=Voc.items()
  18 VK.sort(cmpv,reverse=True)
  19 for v,k in VK[:10]:
  20     print u"{1}: {0}".format(k,v).encode("utf8")

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.

You are not allowed to attach a file to this page.