प्रदर्शन गणितीय अभिव्यक्ति एक स्ट्रिंग शब्दकोश से चर मानों का उपयोग कर के रूप में लिखा (अजगर)

वोट
1

मान लीजिए कि मैं इस आपरेशन एक स्ट्रिंग चर के रूप में करते हैं:

formula = '{a} + {b}'

और मैं इस तरह के रूप में एक शब्दकोश है

data = {'a': 3, 'b': 4}

वहाँ कुछ पुस्तकालय जहां में इस तरह के एक कार्यक्षमता है:

evaluate(operation = formula, variables = data)

देता है:

7
07/02/2017 को 09:21
उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
1

हालांकि सिफारिश नहीं है, तो आप उपयोग कर सकते हैं eval()। चेक आउट:

>>> data = {'a': 3, 'b': 4}
>>> eval('{a} + {b}'.format(**data))
>>> 7

eval()अजगर कोड के रूप में दिया स्ट्रिंग निष्पादित करने के लिए कोशिश करेंगे। अजगर के बारे में अधिक जानकारी के लिए formatआप वास्तव में अच्छा है पर एक नज़र ले जा सकते हैं pyformat साइट।

07/02/2017 को 09:30
का स्रोत उपयोगकर्ता

वोट
1

सबसे पहले आप अपने स्ट्रिंग पार्स करने की जरूरत है, तो आप आदेश उनके समकक्ष काम करता है, जो आप उपयोग कर सकते हैं करने के लिए स्थापित किया गया ऑपरेटरों को मैप करने में एक उचित शब्दकोश की आवश्यकता है operatorइस उद्देश्य के लिए मॉड्यूल:

In [54]: from operator import add

In [55]: operators = {'+': add}  # this is an example, if you are dealing with more operations you need to add them to this dictionary

In [56]: def evaluate(formula, data):
             a, op, b = re.match(r'{(\w)} (\W) {(\w)}', formula).groups()
             op = operators[op]
             a, b = data[a], data[b]
             return op(a, b)
   ....: 

In [57]: evaluate(formula, data)
Out[57]: 7
07/02/2017 को 09:32
का स्रोत उपयोगकर्ता

वोट
4

आप python3 उपयोग कर रहे हैं आप स्ट्रिंग स्वरूपण के साथ कुछ इस तरह कर सकते हैं:

>>> import ast
>>> data = {'a': 3, 'b': 4}
>>> formula = '{a} + {b}'
>>> res_string = formula.format(a=data['a'], b=data['b'])
>>> res = ast.literal_eval(res_string)
>>> print(res)
7

या और भी बेहतर रूप में टिप्पणी में स्टीवन द्वारा कहा:

res_string = formula.format(**data)

या यदि आप Python3.6 उपयोग कर रहे हैं आप भी शांत च-स्ट्रिंग के साथ ऐसा कर सकते हैं:

>>> f"{sum(data.values())}"
'7'
07/02/2017 को 09:49
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more