2017-06-11 38 views
1

在Python中,我有一个脚本,它从外部来源接收名称为1或多个变量的输入,然后在PLC上查找当前值并将它们返回给客户。Python根据字典中的值返回格式化的字符串

在脚本上,我定义了所有可能的变量以及要显示给客户端的所需格式和单位。

given_variable = "temp1" #Client needs current value of temp1 
vars_format = { 
    "temp1":["%0.1f","C"], 
    "press1":["%0.2f","bar"], 
    "temp2":["%d","K"], 
    "distance":["%0.3f","km"], 
    "switch":["%d",""] 
} 

# Logic for finding current plc_value of given_variable 
# plc_value is a string that looks like a real number 
# ("3.14159"), an integer "3" or a string "Running" 

return "%s %s" % (plc_value, vars_format[ given_variable ][1]) 

如何动态地(根据字典)以所需格式返回plc_value? 在这个例子中,如何获得“23.4 C”而不是“temp1”或“45.21 bar”的“23.39999 C”而不是“press1”的“42.21248 bar”?

回答

4

那么,你的价值应用到什么vars_format回报:

return "%s %s" % (vars_format[given_variable][0] % plc_value, vars_format[given_variable][1]) 

但是,这是丑陋的地狱。你为什么不只是一切都定义为一个不错的源字符串,可以互换基础上,given_variable

vars_format = { 
    "temp1": "%0.1f C", 
    "press1":"%0.2f bar", 
    "temp2": "%d K", 
    "distance": "%0.3f km", 
    "switch": "%d" 
} 

return vars_format[given_variable] % plc_value 

甚至更​​好,使用str.format()更多的灵活性和更现代的字符串替换选项。

+0

我把我的变量改为“不错的源字符串”..谢谢! –