Python字串格式化

2021-07-28 19:39:10 字數 4305 閱讀 7358

1、格式化操作符(%)

%"是python風格的字串格式化操作符,非常類似c語言裡的printf()函式的字串格式化(c語言中也是使用%)。

%c :--> 轉換成字元(ascii 碼值,或者長度為一的字串)

%r :--> 優先用repr()函式進行字串轉換

%s :--> 優先用str()函式進行字串轉換

%d / %i :--> 轉成有符號十進位制數

%u :--> 轉成無符號十進位制數

%o :--> 轉成無符號八進位制數

%x / %x :--> 轉成無符號十六進製制數(x / x 代表轉換後的十六進製制字元的大小寫)

%e / %e :--> 轉成科學計數法(e / e控制輸出e / e)

%f / %f :--> 轉成浮點數(小數部分自然截斷)

%g / %g :--> %e和%f / %e和%f 的簡寫

%% :--> 輸出% (格式化字串裡面包括百分號,那麼必須使用%%)

2、格式化操作符輔助符

通過"%"可以進行字串格式化,但是"%"經常會結合下面的輔助符一起使用。

* :--> 定義寬度或者小數點精度

- :--> 用做左對齊

+ :--> 在正數前面顯示加號(+)

# :--> 在八進位制數前面顯示零(0),在十六進製制前面顯示"0x"或者"0x"(取決於用的是"x"還是"x")

0 :--> 顯示的數字前面填充"0"而不是預設的空格

(var) :--> 對映變數(通常用來處理字段型別的引數)

m.n :--> m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)

示例:

num = 100

print "%d to hex is %x" %(num, num)

print "%d to hex is %x" %(num, num)

print "%d to hex is %#x" %(num, num)

print "%d to hex is %#x" %(num, num)

# 浮點數

f = 3.1415926

print "value of f is: %.4f" %f

# 指定寬度和對齊

students = [, , ]

print "name: %10s, age: %10d" %(students[0]["name"], students[0]["age"])

print "name: %-10s, age: %-10d" %(students[1]["name"], students[1]["age"])

print "name: %*s, age: %0*d" %(10, students[2]["name"], 10, students[2]["age"])

# dict引數

for student in students:

print "%(name)s is %(age)d years old" %student

3、字串模板

其實,在python中進行字串的格式化,除了格式化操作符,還可以使用string模組中的字串模板(template)物件。下面就主要看看template物件的substitute()方法:

from string import template

s = template("hi, $name! $name is learning $language")

print s.substitute(name="wilber", language="python")

d =

print s.substitute(d)

# 用$$表示$符號

s = template("this book ($bname) is 17$$")

print s.substitute(bname="tcp/ip")

4、字串內建函式format()

python2.6開始,新增了一種格式化字串的函式str.format(),通過這個函式同樣可以對字串進行格式化處理。在format()函式中,使用「{}」符號來當作格式化操作符。

例子演示format()函式:

# 位置引數

print " is years old".format("wilber", 28)

print "{} is {} years old".format("wilber", 28)

print "hi, ! is years old".format("wilber", 28)

# 關鍵字引數

print " is years old".format(name = "wilber", age = 28)

print 'my name is , and i love !'.format(name='lichmama', language='python')

# 下標引數

li = ["wilber", 28]

print " is years old".format(li)

# 填充與對齊

# ^、<、>分別是居中、左對齊、右對齊,後面帶寬度

# :號後面帶填充的字元,只能是乙個字元,不指定的話預設是用空格填充

print ''.format('3.14')

print ''.format('3.14')

print ''.format('3.14')

print ''.format('3.14')

print ''.format('3.14')

# 浮點數精度

print ''.format(3.1415926)

print ''.format(3.1415926)

# 進製

# b、d、o、x分別是二進位制、十進位制、八進位制、十六進製制

print ''.format(11)

print ''.format(11)

print ''.format(11)

print ''.format(11)

print ''.format(11)

print ''.format(11)

# 千位分隔符

print ''.format(15700000000)

5、str的內建函式

只要s是乙個字串物件就可以直接使用內建函式,而不用import。

# 小寫  :--> s.lower() 

# 大寫  :--> s.upper() 

#大小寫互換  :--> s.swapcase() 

# 首字母大寫  :--> s.capitalize() 

# 輸出width個字元,s左對齊,不足部分用fillchar填充,預設的為空格。  :--> s.ljust(width,[fillchar]) 

# 右對齊  :--> s.rjust(width,[fillchar]) 

# 中間對齊  :--> s.center(width, [fillchar]) 

# 返回s中出現substr的第乙個字母的標號,如果s中沒有substr則返回-1。start和end作用就相當於在s[start:end]中搜尋 

s.find(substr, [start, [end]]) 

# 返回s中最後出現的substr的第乙個字母的標號,如果s中沒有substr則返回-1,也就是說從右邊算起的第一次出現的substr的首字母標號 

s.rfind(substr, [start, [end]]) 

# 計算substr在s中出現的次數 

s.count(substr, [start, [end]]) 

#把s中的oldstar替換為newstr,count為替換次數

s.replace(oldstr, newstr, [count]) 

# 把s中前後chars中有的字元全部去掉,可以理解為把s前後chars替換為none 

s.strip([chars]) 

s.lstrip([chars]) 

s.rstrip([chars]) 

# 以sep為分隔符,把s分成乙個list。maxsplit表示分割的次數。預設的分割符為空白字元 

s.split([sep, [maxsplit]]) 

# 把seq代表的字串序列,用s連線起來 

s.join(seq)

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