標籤:python template string 模板
1.什麼是templatetemplate是python中的string庫的一部分使用template可以不編輯應用就可以改變其中的資料範本還可以被他的子類修改2. template如何工作的template是含有預留位置的字串用字典將值對應到模板中預留位置後面跟著的變數名要符合python文法中的變數名規則Template(“$name is friends with $friend”)3.舉例
from string import Templatedef main(): cart = [] cart.append(dict(item=‘coke‘,price=11,qty= 1)) cart.append(dict(item=‘cake‘,price=12,qty=6)) cart.append(dict(item=‘fish‘,price = 1,qty =4)) t = Template("$qty * $item = $price") total = 0 print "Cart" for data in cart: print t.substitute(data) total += data["price"] print "Total: %s"%(total,)if __name__ == "__main__": main()
4.template 異常error預留位置所引導的變數沒與字典匹配的話,解譯器會拋出KeyError。因為我們的字典裡沒有這個鍵。一些預留位置引導的變數是不好的。比如,這個變數以數字開頭。這會使解譯器拋出ValueError異常。5. safe_substitute()如果我們使用這個函數,template可以處理這些異常並返回給我們字串。如果哪個預留位置變數有異常,返回的這個字串中這個預留位置就沒有變化,不會被替代。比如,Template(“$name had $money”).如果money這裡有錯誤,那麼使用safe_substitute()後輸出的就是“James had $money”6.可以使用自己喜歡的符號引導佔位變數我們要做的就是重載類屬性delimiter,並修改相應的模板字串和變數。這裡我們用C語言的取地址符號替代預設的美元$符號。
from string import Templateclass MyTemplate(Template): delimiter = ‘&‘def main(): cart = [] cart.append(dict(item=‘coke‘,price=11,qty= 1)) cart.append(dict(item=‘cake‘,price=12,qty=6)) cart.append(dict(item=‘fish‘,price = 1,qty =4)) t = MyTemplate("&qty * &item = &price") total = 0 print "Cart" for data in cart: print t.substitute(data) total += data["price"] print "Total: %s"%(total,)if __name__ == "__main__": main()
運行結果還是一樣的。
Cart
1 * coke = 11
6 * cake = 12
4 * fish = 1
Total: 24
7.小提示如果你行輸出delimiter的話,就要連續輸入兩個delimiter。可以認為,delimiter就是轉義符。比如,在delimiter是’$’的情況下:
>>> t = Template(“$you owe me $$0.”)
>>> t.substitute(dict(you=’James’))
“James owe me $0.”
如果你還想改變預留位置後面的變數名的命名規則,這也可以。繼承Template類之後,改變類屬性idpattern,其預設值為r”[_a-z][_a-z0-9]*”。如果你還有需求,想要改變一個單詞的某一部分。這也行。只需將佔位符後面的變數名加上{}。比如:
>>> t = Template(“The ${back}yard is far away.”)
>>> t.substitute(dict(back=’ship’))
“The shipyard is far away.”
[筆記]python template 模板