Python格式化字串

來源:互聯網
上載者:User

標籤:

在編寫程式的過程中,經常需要進行格式化輸出,每次用每次查。乾脆就在這裡整理一下,以便索引。

格式化操作符(%)

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

下面整理了一下Python中字串格式化符合:

格式化符號

說明

%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 的簡寫

%%

輸出% (格式化字串裡麵包括百分比符號,那麼必須使用%%)

這裡列出的格式化符合都比較簡單,唯一想要強調一下的就是"%s"和"%r"的差別。

看個簡單的代碼:

string = "Hello\tWill\n"print "%s" %stringprint "%r" %string

代碼的輸出為:

其實,這裡的差異是str()和repr()兩個內建函數之間的差異:

  • str()得到的字串是面向使用者的,具有較好的可讀性
  • repr()得到的字串是面向機器的
    • 通常(不是所有)repr()得到的效果是:obj == eval(repr(obj))
格式化操作符輔助符

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

輔助符號

說明

*

定義寬度或者小數點精度

-

用做靠左對齊

+

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

#

在八位元前面顯示零(0),在十六進位前面顯示"0x"或者"0X"(取決於用的是"x"還是"X")

0

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

(var)

映射變數(通常用來處理欄位類型的參數)

m.n

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

看一些簡單的 例子:

num = 100print "%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.1415926print "value of f is: %.4f" %f# 指定寬度和對齊students = [{"name":"Wilber", "age":27}, {"name":"Will", "age":28}, {"name":"June", "age":27}]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

代碼輸出為:

對於Python的格式化操作符,不僅可以接受tuple類型的參數,也可以支援dict,象上面代碼的最後一部分,那麼格式化字串中就可以直接使用"%(key)s"(這裡的s根據具體類型改變)的方式表示dict中對應的value了。

字串模板

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

from string import Templates = Template("Hi, $name! $name is learning $language")print s.substitute(name="Wilber", language="Python")d = {"name": "Will", "language": "C#"}print s.substitute(d)# 用$$表示$符號s = Template("This book ($bname) is 17$$")print s.substitute(bname="TCP/IP")

代碼結果為:

總結

本文整理了一些格式化字元,以及一些輔助指令,結合格式化操作符(%),就可以產生特定格式的字串了。也可以使用字串模板來進行字串格式化。

Python格式化字串

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.