Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-09-26 11:35:39, 6.8 KB) [[attachment:corrnum.py]]
- [получить | показать] (2011-09-26 11:35:39, 0.6 KB) [[attachment:corrnumC.py]]
- [получить | показать] (2011-09-26 11:35:39, 2.4 KB) [[attachment:vyr4.py]]
- [получить | показать] (2011-09-26 11:35:39, 2.4 KB) [[attachment:vyr4G.py]]
- [получить | показать] (2011-09-26 11:35:39, 1.4 KB) [[attachment:wiki.py]]
- [получить | показать] (2011-09-26 11:35:39, 2.0 KB) [[attachment:word_number3.py]]
Вам нельзя прикреплять файлы к этой странице.