繁体   English   中英

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

[英]Python return formated string according to a value in dictionary

在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? 在示例中,如何为“ temp1”获得“ 23.4 C”而不是“ 23.39999 C”,或者为“ press1”获得“ 45.21 bar”而不是“ 42.21248 bar”?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM