-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathnum_en.py
More file actions
49 lines (40 loc) · 2.16 KB
/
num_en.py
File metadata and controls
49 lines (40 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# coding: utf-8
__author__ = 'soshial'
import num_base,re
class NumEn(num_base.NumBase):
def __init__(self,language,logger):
super(NumEn,self).__init__(language,logger)
self.decades = {"'20s":"twenties","1920s":"twenties","'30s":"thirties","1930s":"thirties","'40s":"fourties","1940s":"fourties",
"'50s":"fifties","1950s":"fifties","'60s":"sixties","1960s":"sixties","'70s":"seventies","1970s":"seventies",
"'80s":"eighties","1980s":"eighties","'90s":"nineties","1990s":"nineties"}
self.from_to = u"from/to"
self.endings = [u"-year-old",u"-pound",u"-foot",u"-acre",u"-year",u"-liter",u"-litre",u"-step",u"-yard",
u"-day",u"-hour",u"-month-old",u"-month",u"-million",u"-week",u"-mile",u"-plus",u"-point",
u"-minute",u"-inch",u"-degrees",u"-second"]
self.months = ['January','February','March','April','June','July','August','September','October','November','December']
self.plus = u"/plus"
self.degree = u"degree/s"
self.number = u"number"
def ordinals(self,str):
if re.search("^\d*(1st|2nd|3rd|[4567890]th|11th|12th|13th)$",str):
return self.numword.ordinal(self.get_canonical_number_from_string(re.sub('\D','',str)))
else: return False
def percentage(self,number,power=0):
percent = ["percent","per mille","basis point"]
return self.numword.cardinal(number) + " " + percent[power]
def other(self,str):
if str == "24/7": return "twenty-four seven"
elif str == "9/11": return "nine-eleven"
elif str == "3D": return "three-d"
else:
print u"OTHER!!!_with", str
self.logger.info("OTHER!!!_with", str)
def short_endings(self,str):
return str
def complex_endings(self,str,number):
return unicode(self.numword.cardinal(number))+re.sub("\d","",str)
def temperature(self,number):
#print "@2"
return self.numword._split(number,self.degree,split_precision=0)
def is_date_near(self,details):
if set(self.months) & (set(details['left']) | set(details['right'])): return True