Python 根据字典中的值返回格式化字符串



在 Python 中,我有一个脚本,它接收来自外部源的输入,名称为 1 个或多个变量,然后在 PLC 上查找当前值并将它们返回给客户端。

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

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?在示例中,如何为"temp23.4"获取"23.39999 C"而不是"temp1"或"45.21 bar"而不是"42.21248 bar"用于"press1"?

好吧,将您的值应用于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() 以获得更大的灵活性和更现代的字符串替换选项。

最新更新