本文將透過string的format函式,介紹在Python中格式化字串的幾種常用方法。
以下是我們的原始碼:
程式的執行效果如下:
下面我們將逐行解釋一下。
第1行:這是format的基本用法。基於傳入引數的位置,我們使用花括號來將對應的引數替換到format的字串上。比如第1個引數我們傳入了"成都",第2個引數我們傳入了34。因此,在字串中,程式第1次遇到花括號時,就將"成都"替換上去,第2次遇到花括號時,將34替換上去。
第2行和第3行:我們在花括號中加入了數字,這樣就可以自由的控制傳入的引數。比如這次,我們第1個引數傳入string形式的分行名稱,第2個引數傳入number形式的餘額時,我們可以使用{0}來引用分行名稱,用{1}來引用餘額。在某些使用場景下,我們可能引用的順序和引數傳入的順序會不同。比如第3行,我們對調了傳入引數的順序,我們先傳入37,再傳入"大連",而引用時,我們就可以直接使用{1}來引用第2個引數即"大連"來替換這個字串。這在引數較多或需要重複引用的時候就很方便,試想一下我們有七八個引數,又或是比如分行名稱可能在兩個地方都要用,那我們就可以在每個需要分行名稱的地方,都使用{1}替換一次,這就方便多了,要不然我們就得在傳入的引數列表上多次敲好多遍變數名稱。
第4行:我們使用了關鍵字引數。傳入引數時指定了關鍵字引數之後,在使用時,我們可以用{name}的形式直接引用,如果只是使用基於位置的引數,那麼引數多了會看不出來到底引用了哪個引數,容易出BUG(想想七八個引數,看字串含義的時候,估計你就得回去數一下{5}是指誰?),但是如果使用了關鍵字引數,就可以顧名思義,直觀的看出整個語句的含義。大家回過頭看一下第4行的print是不是就比之前的例子,要容易理解一些。
第5行:當然,我們也可以將基於位置的引數和關鍵字引數相結合。就像第5行演示的一樣。第1和第2個引數是基於位置的。使用{0}和{1}引用,而第3個引數是使用關鍵字引數引用。這裡大家要注意,關鍵字引數要位於基於位置的引數後面。
好了,下面我們看兩個比較複雜的例子。
第6行:我們在引數上使用了字典(dict)變數。這時我們使用類似{0[name]}的形式,引用了這個字典變數。花括號後面的0,代表是基於位置的第1個引數,而由於引數是字典型別,所以再使用方括號加名稱,即[name],就可以引用資料了。其實也有點兒類似我們平常用dict[name]的形式引用資料。
第7行:在上面的例子中,我們雖然可以引用字典型別變量了,但是{0[name]}這種玩意兒,還是太醜陋了。因此我們可以使用"**"符號來解壓引數。經過**ind_chengdu之後,我們在字串中引用引數時,就可以改為{name}這樣的形式,這樣整個字串的展示就很親民了,我們也很容易看出整個字串的含義。現在的效果也比較接近第4行的例子。
我使用的環境:Windows 7 + Python 2.7.17 + PyCharm Community Edition 2016.1.5