[筆記]python template 模板

來源:互聯網
上載者:User

標籤: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 模板

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.