Python字串格式化

2021-06-28 18:07:05 字數 4946 閱讀 1029

在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。

table 3.1. 字串格式化** 格式

描述%%

百分號標記

%c字元及其ascii碼

%s字串

%d有符號整數(十進位制)

%u無符號整數(十進位制)

%o無符號整數(八進位制)

%x無符號整數(十六進製制)

%x無符號整數(十六進製制大寫字元)

%e浮點數字(科學計數法)

%e浮點數字(科學計數法,用e代替e)

%f浮點數字(用小數點符號)

%g浮點數字(根據值的大小採用%e或%f)

%g浮點數字(類似於%g)

%p指標(用十六進製制列印值的記憶體位址)

%n儲存輸出字元的數量放進引數列表的下乙個變數中

str='python string function'

生成字串變數str='python string function'

字串長度獲取:len(str)

例:print '%s length=%d' % (str,len(str))

字母處理

全部大寫:str.upper()

全部小寫:str.lower()

大小寫互換:str.swapcase()

首字母大寫,其餘小寫:str.capitalize()

首字母大寫:str.title()

print '%s lower=%s' % (str,str.lower())

print '%s upper=%s' % (str,str.upper())

print '%s swapcase=%s' % (str,str.swapcase())

print '%s capitalize=%s' % (str,str.capitalize())

print '%s title=%s' % (str,str.title()) 

格式化相關

獲取固定長度,右對齊,左邊不夠用空格補齊:str.ljust(width)

獲取固定長度,左對齊,右邊不夠用空格補齊:str.ljust(width)

獲取固定長度,中間對齊,兩邊不夠用空格補齊:str.ljust(width)

獲取固定長度,右對齊,左邊不足用0補齊

print '%s ljust=%s' % (str,str.ljust(20))

print '%s rjust=%s' % (str,str.rjust(20))

print '%s center=%s' % (str,str.center(20))

print '%s zfill=%s' % (str,str.zfill(20))

字串搜尋相關

搜尋指定字串,沒有返回-1:str.find('t')

指定起始位置搜尋:str.find('t',start)

指定起始及結束位置搜尋:str.find('t',start,end)

從右邊開始查詢:str.rfind('t')

搜尋到多少個指定字串:str.count('t')

上面所有方法都可用index代替,不同的是使用index查詢不到會拋異常,而find返回-1

print '%s find nono=%d' % (str,str.find('nono'))

print '%s find t=%d' % (str,str.find('t'))

print '%s find t from %d=%d' % (str,1,str.find('t',1))

print '%s find t from %d to %d=%d' % (str,1,2,str.find('t',1,2))

#print '%s index nono ' % (str,str.index('nono',1,2))

print '%s rfind t=%d' % (str,str.rfind('t'))

print '%s count t=%d' % (str,str.count('t'))

字串替換相關

替換old為new:str.replace('old','new')

替換指定次數的old為new:str.replace('old','new',maxreplacetimes)

print '%s replace t to *=%s' % (str,str.replace('t', '*'))

print '%s replace t to *=%s' % (str,str.replace('t', '*',1))

字串去空格及去指定字元

去兩邊空格:str.strip()

去左空格:str.lstrip()

去右空格:str.rstrip()

去兩邊字串:str.strip('d'),相應的也有lstrip,rstrip

str=' python string function '

print '%s strip=%s' % (str,str.strip())

str='python string function'

print '%s strip=%s' % (str,str.strip('d'))

按指定字元分割字串為陣列:str.split(' ')

預設按空格分隔

str='a b c de'

print '%s strip=%s' % (str,str.split())

str='a-b-c-de'

print '%s strip=%s' % (str,str.split('-'))

字串判斷相關

是否以start開頭:str.startswith('start')

是否以end結尾:str.endswith('end')

是否全為字母或數字:str.isalnum()

是否全字母:str.isalpha()

是否全數字:str.isdigit()

是否全小寫:str.islower()

是否全大寫:str.isupper()

str='python string function'

print '%s startwith t=%s' % (str,str.startswith('t'))

print '%s endwith d=%s' % (str,str.endswith('d'))

print '%s isalnum=%s' % (str,str.isalnum())

str='pythonstringfunction'

print '%s isalnum=%s' % (str,str.isalnum())

print '%s isalpha=%s' % (str,str.isalpha())

print '%s isupper=%s' % (str,str.isupper())

print '%s islower=%s' % (str,str.islower())

print '%s isdigit=%s' % (str,str.isdigit())

str='3423'

print '%s isdigit=%s' % (str,str.isdigit())

還有其他常見的python字串處理 函式的話不定期更新。

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中的一致。右邊的 值組 如果有兩個及以上的值則需要用小括號括起來,中間用短號隔開。重點來看左邊的部分。左邊部分的最簡單...