2017-06-11 36 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

我把我的變量改爲「不錯的源字符串」..謝謝! –