Прикреплённый файл «word_number3.py»

Загрузка

   1 #!/usr/bin/python
   2 # coding: utf8
   3 '''
   4 Распознать число, записанное на русском языке ("тридцать два" = 32) (<= 1999) с помощью regexp
   5 '''
   6 
   7 
   8 import re
   9 
  10 genres={
  11     'ones': {
  12       'один': 1, 'два': 2, 'три': 3, 'четыре': 4, 'пять': 5,                     
  13       'шесть': 6, 'семь': 7, 'восемь': 8, 'девять': 9, },
  14     'teens': {
  15       'десять': 10, 'одиннадцать': 11, 'двенадцать': 12, 'тринадцать': 13, 'четырнадцать': 14, 
  16       'пятнадцать': 15, 'шестнадцать': 16, 'семнадцать': 17, 'восемнадцать': 18,
  17       'девятнадцать': 19, },
  18     'tens': {
  19       'двадцать': 20, 'тридцать': 30, 'сорок': 40, 'пятьдесят': 50,
  20       'шестьдесят': 60, 'семьдесят': 70, 'восемьдесят': 80, 'девяносто': 90, },
  21     'hundreds': {
  22       'сто': 100, 'двести': 200, 'триста': 300, 'четыреста': 400, 'пятьсот': 500, 
  23       'шестьсот': 600, 'семьсот': 700, 'восемьсот': 800, 'девятьсот': 900, },
  24 }
  25 
  26 
  27 words={'':0}
  28 for g in genres: words.update(genres[g])
  29 
  30 def make_spec(Lst): return "|".join(Lst)
  31 
  32 rOnes=make_spec(genres['ones'].keys())
  33 rTeens=make_spec(genres['teens'].keys())
  34 rTens=make_spec(genres['tens'].keys())
  35 rHundreds=make_spec(genres['hundreds'].keys())
  36 
  37 # само сложное -- не допустить сопоставления с пустой сторкой
  38 # Чило < 100
  39 rN2=r"({2})(?:\s+({0}))?|({1})|({0})".format(rOnes,rTeens,rTens)
  40 # Число < 1000
  41 rNumber=r"({0})(?:\s+{1})?|(?:{1})".format(rHundreds,rN2)
  42 
  43 # \b работает только при указании кодировки
  44 R=re.compile(r"\b(?:{0})\b".format(rNumber),re.U)
  45 S=raw_input()
  46 Nums=R.findall(S)
  47 print Nums
  48 for g in R.findall(S):
  49     N=0
  50     for n in g:
  51         N+=words[n]
  52     print N

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.