-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNumericFormulaParser.py
More file actions
36 lines (28 loc) · 1.25 KB
/
NumericFormulaParser.py
File metadata and controls
36 lines (28 loc) · 1.25 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
__author__ = 'Navin'
import re
import string
class NumericFormulaParser(object):
def decomposeVariables(self,operand):
varList=[]
chars = re.escape(string.punctuation)
variables= re.sub(r'['+chars+']', '|',operand).split("|")
for everyVar in variables:
regex= re.compile(r'\d*')
match=regex.search(everyVar)
if everyVar and not match.group():
varList.append(everyVar)
return varList
def calculateOutputValue(self,numerator, denominator, counterData):
numervalues=self.decomposeVariables(numerator)
denomvalues=self.decomposeVariables(denominator)
for numer in numervalues:
numerator = str(numerator).replace(numer,counterData[numer])
for denom in denomvalues:
denominator= str(denominator).replace(denom,counterData[denom])
value = self.calcDivision( numerator,denominator)
return value
def calcDivision(self, numerator, denominator):
calcnumerator = format(float(eval(numerator)), '.2f')
calcdenominator = format(float(eval(denominator)), '.2f')
value = format((float(calcnumerator) / float(calcdenominator)), '.2f')
return value