Python格式化字符串(格式化輸出)

2021-02-19 小學生編程
我們在《第一個Python程序——在屏幕上輸出文本》中講到過 print() 函數的用法,這只是最簡單最初級的形式,print() 還有很多高級的玩法,比如格式化輸出,這就是本節要講解的內容。

熟悉C語言 printf() 函數的讀者能夠輕而易舉學會 Python print() 函數,它們是非常類似的。

print() 函數使用以%開頭的轉換說明符對各種類型的數據進行格式化輸出,具體請看下表。

表 1 Python 轉換說明符轉換說明符解釋%d、%i轉換為帶符號的十進位整數%o轉換為帶符號的八進位整數%x、%X轉換為帶符號的十六進位整數%e轉化為科學計數法表示的浮點數(e 小寫)%E轉化為科學計數法表示的浮點數(E 大寫)%f、%F轉化為十進位浮點數%g智能選擇使用 %f 或 %e 格式%G智能選擇使用 %F 或 %E 格式%c格式化字符及其 ASCII 碼%r使用 repr() 函數將表達式轉換為字符串%s使用 str() 函數將表達式轉換為字符串


轉換說明符(Conversion Specifier)只是一個佔位符,它會被後面表達式(變量、常量、數字、字符串、加減乘除等各種形式)的值代替。

【實例】輸出一個整數:

age = 8print("C語言中文網已經%d歲了!" % age)

運行結果:

C語言中文網已經8歲了!

在 print() 函數中,由引號包圍的是格式化字符串,它相當於一個字符串模板,可以放置一些轉換說明符(佔位符)。本例的格式化字符串中包含一個%d說明符,它最終會被後面的 age 變量的值所替代。

中間的%是一個分隔符,它前面是格式化字符串,後面是要輸出的表達式。

當然,格式化字符串中也可以包含多個轉換說明符,這個時候也得提供多個表達式,用以替換對應的轉換說明符;多個表達式必須使用小括號( )包圍起來。請看下面的例子:

name = "C語言中文網"age = 8url = "http://c.biancheng.net/"print("%s已經%d歲了,它的網址是%s。" % (name, age, url))

運行結果:

C語言中文網已經8歲了,它的網址是http://c.biancheng.net/。

總之,有幾個佔位符,後面就得跟著幾個表達式。

指定最小輸出寬度

當使用表1中的轉換說明符時,可以使用下面的格式指定最小輸出寬度(至少佔用多少個字符的位置):

%10d 表示輸出的整數寬度至少為 10;

%20s 表示輸出的字符串寬度至少為 20。


請看下面的演示:


n = 1234567print("n(10):%10d." % n)print("n(5):%5d." % n)url = "http://c.biancheng.net/python/"print("url(35):%35s." % url)print("url(20):%20s." % url)

運行結果:

n(10): 1234567.
n(5):1234567.
url(35): http://c.biancheng.net/python/.
url(20):http://c.biancheng.net/python/.

從運行結果可以發現,對於整數和字符串,當數據的實際寬度小於指定寬度時,會在左側以空格補齊;當數據的實際寬度大於指定寬度時,會按照數據的實際寬度輸出。

你看,這裡指定的只是最小寬度,當數據的實際寬度足夠時,指定的寬度就沒有實際意義了。

指定對齊方式

默認情況下,print() 輸出的數據總是右對齊的。也就是說,當數據不夠寬時,數據總是靠右邊輸出,而在左邊補充空格以達到指定的寬度。Python 允許在最小寬度之前增加一個標誌來改變對齊方式,Python 支持的標誌如下:

Python 支持的標誌標誌說明-指定左對齊+表示輸出的數字總要帶著符號;正數帶+,負數帶-。0表示寬度不足時補充 0,而不是補充空格。


幾點說明:


請看下面的代碼:

n = 123456print("n(09):%09d" % n)print("n(+9):%+9d" % n)f = 140.5print("f(-+0):%-+010f" % f)s = "Hello"print("s(-10):%-10s." % s)

運行結果:

n(09):000123456
n(+9): +123456
f(-+0):+140.500000
s(-10):Hello .

指定小數精度

對於小數(浮點數),print() 還允許指定小數點後的數字位數,也即指定小數的輸出精度。

精度值需要放在最小寬度之後,中間用點號.隔開;也可以不寫最小寬度,只寫精度。具體格式如下:

%m.nf
%.nf

m 表示最小寬度,n 表示輸出精度,.是必須存在的。

請看下面的代碼:


f = 3.141592653

# 最小寬度為8,小數點後保留3位

print("%8.3f" % f)

# 最小寬度為8,小數點後保留3位,左邊補0

print("%08.3f" % f)

# 最小寬度為8,小數點後保留3位,左邊補0,帶符號

print("%+08.3f" % f)

運行結果:

3.142
0003.142
+003.142

相關焦點

  • python格式化字符串研究
    前言與隊友交流時提及python的格式化字符串漏洞,這個漏洞之前接觸不多,所以寫篇文章從基礎部分仔細研究了研究。python環境是python3.7。Python3裡的格式化字符串python3中的格式化字符串主要有以下兩種形式:"test %s" % ('test')"test {0}".format('test')這兩個語句的輸出都是test test。
  • 左右用R右手Python系列——字符串格式化輸出
    今天是R語言與Python綜合系列的第一篇,就聊一聊兩者在常用字符串輸出上的差異。為了方便統一案例圖片的風格,今天統一在jupyter編輯器中編輯(R和Python)。通常在R語言中我們使用最多的關於字符串輸出函數是paste和paste0。這兩著之間的差別非常微小,如同其字面意思一樣,前者可以自定義字符串間隔符號,後者則默認沒有間隔符號。
  • Python中的轉義字符串與格式化字符串
    # 格式化字符串# 常用佔位符# %s 格式化字符串# %d 格式化整數格式化字符串# 使用佔位符,格式化print("我喜歡%s,在%s年" %(c,n))f = 1.133格式化字符串# 轉義字符串# \\# \'
  • Python中的格式化字符串與轉義字符串
    # 格式化字符串 # 常用佔位符 # %s 格式化字符串 # %d 格式化整數 # %f 格式化浮點數,可指定小數後的精度 # 如:我喜歡你,在2020
  • 聊一聊:Python格式化字符串
    下面整理了一下Python中字符串格式化符合:格式化符號說明%c轉換成字符(ASCII 碼值,或者長度為一的字符串)%r優先用repr()函數進行字符串轉換%s優先用str()函數進行字符串轉換%d / %i轉成有符號十進位數%u
  • 小瘋談python:字符串的拼接與格式化輸出
    在上一篇文章中我想大家介紹了字符串的內置操作函數和方法,不過對於字符串來說這並不是最重要的知識點,因為對於字符串的操作我們一般首選是使用正則表達式。對於初學者來說,字符串最重要的其實是其格式化輸出,因為一個程序運行結束後,如果要我們要列印相關的數據,絕大多數情況下都是以字符串的形式呈現在控制臺。
  • Python2.6版本以後的format()方法格式化字符串
    第七十九節:format()方法格式化字符串Python的版本進化到2.6版以後,創造了format()方法使用字符串對象對字符串進行格式化。format()方法格式化字符串的語法是這樣的:str.format(args)它的參數說明如下:str用於指定字符串模板;args就是要轉換的項,有多個項時,使用逗號分隔。
  • python實踐分享:格式化字符串時使用.format方式還是「%」
    Python中內置的%操作符和.format方式都可用于格式化字符串。先來看看這兩種具體格式化方法的基本語法形式和常見用法。%操作符根據轉換說明符所規定的格式返回一串格式化後的字符申,轉換說明符的基本形式為:%[轉換標記][寬度[.精確度]]轉換類型。
  • 如何使用Python 進行格式化輸出?
    首先明確下,什麼是格式化輸出?當我們通過print 語句或者 write 語句向外設進行輸出的時候,往往並不會僅僅只是輸出一個固定的字符串,而是希望把某些變量的值嵌入到字符串中進行輸出,並且對於輸出格式,可能還需要進行控制,例如如何對齊(左對齊,居中對齊,右對齊),小數點保留幾位,使用十進位還是十六進位,是否要使用科學記數法輸出等。格式化輸出,可以幫你靈活方便的控制輸出樣式。
  • 深入解析sprintf格式化字符串漏洞
    break了,php未做任何處理,直接跳過,所以導致了這個問題:沒做字符類型檢測的最大危害就是它可以吃掉一個轉義符, 如果%後面出現一個,那麼php會把\當作一個格式化字符的類型而吃掉, 最後%\(或%1$\)被替換為空因此sprintf注入,或者說php格式化字符串注入的原理為: 要明白%後的一個字符(除了%,%上面表格已經給出了)都會被當作字符型類型而被吃掉
  • 字符串格式化表達式與佔位符和類型碼有什麼關係?程式設計師不一定知道
    大家好,前面我們學了字符串的方法調用,對於字符串的方法,不需要去死記硬背,平時只要記住用法就行了,到了需要用它的時候,找到其語義,拿出來用就行。今天,我們接著講字符串的格式化表達式。一:什麼是字符串的格式化表達式?1、 字符串的格式化表達式,運算符是:%。其作用是生成一定格式的字符串。
  • CTF必備技能丨Linux Pwn入門教程——格式化字符串漏洞
    教程僅針對i386/amd64下的Linux Pwn常見的Pwn手法,如棧,堆,整數溢出,格式化字符串,條件競爭等進行介紹,所有環境都會封裝在Docker鏡像當中,並提供調試用的教學程序,來自歷年賽事的原題和帶有注釋的python腳本。今天i春秋與大家分享的是Linux Pwn入門教程第七章:格式化字符串漏洞,閱讀用時約12分鐘。
  • 雲計算開發學習筆記:Python3三引號和f-string格式化字符串
    Python3三引號Python三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。實例如下三引號讓程式設計師從引號和特殊字符串的泥潭裡面解脫出來,自始至終保持一小塊字符串的格式是所謂的WYSIWYG(所見即所得)格式的。
  • python字符串格式化深入詳解(四種方法)
    格式符可以包含有一個類型碼,用以控制顯示的類型,如下:%s    字符串 (採用str()的顯示)%r    字符串 (採用repr()的顯示)%c    單個字符%b    二進位整數%d    十進位整數%i    十進位整數%o    八進位整數%x    十六進位整數
  • 字符串輸出的4種方式:Python String Formatting Best Practices
    Python 字符串格式化技巧和最佳實踐。還記得Python的禪宗,以及 "在Python中應該有一種明顯的方法來做某事 "嗎?當你發現在Python中進行字符串格式化有四種主要方法時,你可能會撓頭。在本教程中,您將學習Python中字符串格式化的四種主要方法,以及它們的優缺點。您還會得到一個簡單的經驗法則,即如何在自己的程序中選擇最佳的通用字符串格式化方法。
  • Python字符串類型的格式化
    字符串格式化用於解決字符串和變量同時輸出時的格式安排。字符串是程序向控制臺、網絡、文件等介質輸出運算結果的主要形式之一,為了能提供更好的可讀性和靈活性,字符串類型的格式化是運用字符串類型的重要內容之一。Python語言同時支持兩種字符串格式化方法,我們本課題要學習的是format()格式化方法,採用format()方法進行字符串格式化。
  • 跟我學java編程—Java的格式化輸出
    中文註解:一個便捷的方法,使用指定的格式字符串和傳入的參數,將格式化的字符串輸出到輸出流(輸出設備)傳入的參數String format字符串類型,符合格式字符串語法描述的字符串Object... args格式字符串中格式說明符引用的參數,參數的數量是可變的,可以為零,參數的最大數量受Java?
  • Python的神奇魔法:鞏固熟練運用字符串拼接序列類型轉化格式化
    字符串拼接最簡單的加法第二種方法:格式化字符串(str)的方法,即:%s.格式化字符串的方法第三種方法:join的方法,iterable可迭代對象,序列類型都是可迭代對象。format的方法2.列表li = ['I','like','python'],用2種方法,將列錶轉成字符串,輸出'I like python'。
  • Python-字符串格式化
    前言Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它增強了字符串格式化的功能。相對於老版的%格式方法,它有很多優點。1.在%方法中%s只能替代字符串類型,而在format中不需要理會數據類型;2.單個參數可以多次輸出,參數順序可以不相同;3.填充方式十分靈活,對齊方式十分強大;4.官方推薦用的方式,%方式將會在後面的版本被淘汰。
  • 從WordPress SQLi談PHP格式化字符串問題
    因為sprintf的問題 (vsprintf與sprintf類似) , '%s' 的前一個  '  會被吃掉, %1$'%s  被格式化為 _thumbnail_id ,最後格式化字符串出來的語句會變成