字符串的格式化html
Python 支持格式化字符串的輸出 。儘管這樣可能會用到很是複雜的表達式,但最基本的用法是將一個值插入到一個有字符串格式符 %s 的字符串中。在 Python 中,字符串格式化使用與 C 中 sprintf 函數同樣的語法。python
在python中格式化輸出字符串通用的形式爲:函數
格式標記字符串 % 要輸出的值組ui
其中,左邊部分的"格式標記字符串"能夠徹底和c中的一致。右邊的"值組"若是有兩個及以上的值則須要用小括號括起來,中間用逗號隔開。spa
重點來看左邊的部分。左邊部分的最簡單形式爲:設計
%code指針
其中的code有多種,不過因爲在python中,全部東西均可以轉換成string類型,所以,若是沒有什麼特殊需求徹底能夠所有使用‘%s’來標記。好比:code
'%s %s %s' % (1, 2.3, ['one', 'two', 'three'])orm
它的輸出爲'1 2.3 ['one', 'two', 'three']',就是按照%左邊的標記輸出的。雖然第一個和第二值不是string類型,同樣沒有問題。在這個過程當中,當電腦發現第一個值不是%s時,會先調用整型數的函數,把第一個值也就是1轉成string類型,而後再調用str()函數來輸出。前面說過還有一個repr()函數,若是要用這個函數,能夠用%r來標記。除了%s外,還有不少相似的code:htm
整型數:%d
無符號整型數:%u
八進制:%o
十六進制:%x %X
浮點數:%f
科學記數法: %e %E
根據數值的不一樣自動選擇%e或%f: %g
根據數值的不一樣自動選擇%E或%f: %G
就跟前面說用\進行轉義同樣,這裏用%做爲格式標記的標識,也有一個%自己應該如何輸出的問題。若是要在"格式標記字符串"中輸出%自己,能夠用%%來表示。
上面說的只是格式標記的最簡間的形式,來看複雜一點的:
‘%6.2f’ % 1.235
在這種形式中,在f的前面出現了一個相似小數的6.2它表示的意思是,總共輸出的長度爲6個字符,其中小數2位。還有更復雜的:
‘%06.2f’ % 1.235
在6的前面多了一個0,表示若是輸出的位數不足6位就用0補足6位。這一行的輸出爲‘001.24’,能夠看到小數也佔用一位。相似於這裏0這樣的標記還有-、+。其中,-表示左對齊,+表示在正數前面也標上+號,默認是不加的。最後來看最複雜的形式:
‘%(name)s:%(score)06.1f’ %{'score':9.5, 'name':'newsim'}
這種形式只用在要輸出的內容爲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字符及其ASCII碼
%s字符串
%d有符號整數(十進制)
%u無符號整數(十進制)
%o無符號整數(八進制)
%x無符號整數(十六進制)
%X無符號整數(十六進制大寫字符)
%e浮點數字(科學計數法)
%E浮點數字(科學計數法,用E代替e)
%f浮點數字(用小數點符號)
%g浮點數字(根據值的大小採用%e或%f)
%G浮點數字(相似於%g)
%p指針(用十六進制打印值的內存地址)
%n存儲輸出字符的數量放進參數列表的下一個變量中
字符串的相關操做舉例
# 字符串對齊
word = "version3.0"
# 20個字符中間對齊
print word.center(20)
# 20個字符兩邊補齊*
print word.center(20, "*")
# 左對齊
print word.ljust(0)
# 20個字符右對齊
print word.rjust(20)
# 前面空20個字符
print "% 30s" % word
#去除轉義字符
strip()
lstrip()
rstrip()
#字符的分割
split()
split(",")
split(",", 2)
#字符串比較
startswith()
endswith()
#查找替換
find(substring [, start [, end]])
rfind()
replace(new, old [, max])
#字符串與日期
time.strftime(format[, tuple]) ->string
time.strptime(string, format) ->struct_time
字符串的格式化
>>> k = "uid"
>>> v = "sa"
>>> "%s=%s" % (k, v)
'uid=sa' 整個表達式的值爲一個字符串。第一個 %s 被變量 k 的值替換;第二個 %s 被 v 的值替換。Python格式化字符串的全部其它字符 (在這個例子中,是等號) 按原樣打印輸出。注意 (k, v) 是一個 tuple。字符串格式化不僅是鏈接。它甚至不單單是格式化。它也是強制類型轉換。
字符串格式化與字符串鏈接的比較
>>> uid = "sa"
>>> pwd = "secret"
>>> print pwd + " is not a good password for " + uid
secret is not a good password for sa
>>> print "%s is not a good password for %s" % (pwd, uid)
secret is not a good password for sa
>>> userCount = 6
>>> print "Users connected: %d" % (userCount, )
Users connected: 6
>>> print "Users connected: " + userCount
Traceback (innermost last):
File "<interactive input>", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects
文章轉載自:[169IT-最新最全的IT資訊]
本文標題:python字符串格式化輸出及相關操做代碼舉例