字串的格式化
在python中也有類似於c中的printf()的格式輸出標記。在python中格式化輸出字串使用的是%運算子,通用的形式為
其中,左邊部分的」格式標記字串「可以完全和c中的一致。右邊的'值組'如果有兩個及以上的值則需要用小括號括起來,中間用短號隔開。重點來看左邊的部分。左邊部分的最簡單形式為:
其中的code有多種,不過由於在python中,所有東西都可以轉換成string型別,因此,如果沒有什麼特殊需求完全可以全部使用』%s『來標記。比如:
它的輸出為'1 2.3 ['one', 'two', 'three']',就是按照%左邊的標記輸出的。雖然第乙個和第二值不是string型別,一樣沒有問題。在這個過程中,當電腦發現第乙個值不是%s時,會先呼叫整型數的函式,把第乙個值也就是1轉成string型別,然後再呼叫str()函式來輸出。前面說過還有乙個repr()函式,如果要用這個函式,可以用%r來標記。除了%s外,還有很多類似的code:
就跟前面說用\進行轉義一樣,這裡用%作為格式標記的標識,也有乙個%本身應該如何輸出的問題。如果要在」格式標記字串「中輸出%本身,可以用%%來表示。
上面說的只是格式標記的最簡間的形式,來看複雜一點的:
在這種形式中,在f的前面出現了乙個類似小數的6.2它表示的意思是,總共輸出的長度為6個字元,其中小數2位。還有更複雜的:
在6的前面多了乙個0,表示如果輸出的位數不足6位就用0補足6位。這一行的輸出為『001.24』,可以看到小數也占用一位。類似於這裡0這樣的標記還有-、+。其中,-表示左對齊,+表示在正數前面也標上+號,預設是不加的。最後來看最複雜的形式:
這種形式只用在要輸出的內容為dictionary(一種python的資料型別)時,小括號中的(name)和(score)對應於後面的鍵值對中的鍵。前面的例子可以看到,」格式標記字串「中標記的順序和"要輸出的值組"中的值是一一對應的,有順序,一對一,二對二。而在這種形式中,則不是,每個格式標記對應哪個值由小括號中的鍵來指定。這行**的輸出為:'newsim:0009.5'。
有時候在%6.2f這種形式中,6和2也不能事先指定,會在程式執行過程中再產生,那怎麼輸入呢,當然不能用%%d.%df或%d.%d%f。可以用%*.*f的形式,當然在後面的」要輸出的值組「中包含那兩個*的值。比如:'%*.*f' % (6, 2, 2.345)就相當於'%6.2f' % 2.345。
這是這本書到此為止看起來最複雜的內容。不過如果記不住,或不想那麼耐煩,完全可以全部用%s代替,或者用多個"+"來構造類似的輸出字串。這裡的%真有點除法的味道,怪不得設計者會選擇用%這個除號。
象c 中的sprintf函式一樣,可以用「%」來格式化字串。
table 3.1. 字串格式化**
格式描述
%%百分號標記
%c字元及其ascii碼
%s字串
%d有符號整數(十進位制)
%u無符號整數(十進位制)
%o無符號整數(八進位制)
%x無符號整數(十六進製制)
%x無符號整數(十六進製制大寫字元)
%e浮點數字(科學計數法)
%e浮點數字(科學計數法,用e代替e)
%f浮點數字(用小數點符號)
%g浮點數字(根據值的大小採用%e或%f)
%g浮點數字(類似於%g)
%p指標(用十六進製制列印值的記憶體位址)
%n儲存輸出字元的數量放進引數列表的下乙個變數中
Python 字串格式化
字串格式化 s 格式化為字串 format hello,s.s enough for ya?values world hot print format values hello,world.hot enough for ya?f 格式化為實數 浮點數 format pi with three dec...
python字串格式化
字串的格式化 在python中也有類似於c中的printf 的格式輸出標記。在python中格式化輸出字串使用的是 運算子,通用的形式為 其中,左邊部分的 格式標記字串 可以完全和c中的一致。右邊的 值組 如果有兩個及以上的值則需要用小括號括起來,中間用短號隔開。重點來看左邊的部分。左邊部分的最簡單...
Python字串格式化
字串的格式化 在python中也有類似於c中的printf 的格式輸出標記。在python中格式化輸出字串使用的是 運算子,通用的形式為 其中,左邊部分的 格式標記字串 可以完全和c中的一致。右邊的 值組 如果有兩個及以上的值則需要用小括號括起來,中間用短號隔開。重點來看左邊的部分。左邊部分的最簡單...