Python中字符串格式化的方法詳解
引子
眾所周知,我們可以使用 print() 方法來(lái)輸出一個(gè)固定內(nèi)容的字符串,就像是 print("Hello, world!") 一樣。但是,在現(xiàn)實(shí)中,我們很多時(shí)候是需要輸出一些內(nèi)容不斷變化,或者內(nèi)容動(dòng)態(tài)生成的字符串,例如,我們不再輸出 "Hello, world!",而是輸出 "Hello, Mike!" 或者 "Hello, Tom!"。
這個(gè)時(shí)候我們?cè)撛趺醋瞿兀?/p>
本文將介紹如何按照需要,在Python中格式化一個(gè)字符串。
“string.format()”方法
在Python中,有幾種格式化字符串的方法,包括 % 格式化方法、str.format() 方法和最近在Python 3.6中引入的 f-strings 方法(也稱(chēng)為格式化字符串字面量)。每種方法都有其自己的優(yōu)點(diǎn)和缺點(diǎn),但它們都可以用于格式化字符串。
在Python 3.6版本之前,我們推薦使用 str.format() 方法格式化字符串。該方法通過(guò)將字符串中的占位符替換為值來(lái)格式化字符串。該方法具有多個(gè)可選參數(shù),允許開(kāi)發(fā)人員自定義輸出的格式。
str.format() 方法的基本語(yǔ)法為:
string.format(value1, value2, ...)
其中,string 是我們要格式化的字符串,value1、value2 等是要替換到字符串中的占位符的值。
字符串中的占位符由成對(duì)的大括號(hào) {} 表示。在大括號(hào)內(nèi)部,我們可以使用格式說(shuō)明符來(lái)控制被替換的值的格式。
以下是一些常用的格式說(shuō)明符:
{}這是最簡(jiǎn)單的格式說(shuō)明符,它只是原樣替換值。
{:<N}這個(gè)說(shuō)明符將值左對(duì)齊,并在右側(cè)填充空格,以達(dá)到總寬度N。
{:>N}這個(gè)說(shuō)明符將值右對(duì)齊,并在左側(cè)填充空格,以達(dá)到總寬度N。
{:^N}這個(gè)說(shuō)明符將值居中,并在兩側(cè)填充空格,以達(dá)到總寬度N。
{:.Nf}這個(gè)說(shuō)明符將浮點(diǎn)數(shù)格式化為N位小數(shù)。
{:.Ng}這個(gè)說(shuō)明符將數(shù)字格式化為N位有效數(shù)字。
{:.N%}這個(gè)說(shuō)明符將浮點(diǎn)數(shù)格式化為帶有N位小數(shù)的百分比。
除了這些格式說(shuō)明符外,str.format()方法還支持許多其他參數(shù):
sep指定在連接多個(gè)值時(shí)要使用的分隔符字符。
end指定要附加到輸出結(jié)尾的字符串。
file指定要將輸出寫(xiě)入的文件對(duì)象。
flush指定在寫(xiě)入輸出后是否刷新輸出緩沖區(qū)。
下面,我們來(lái)看幾個(gè)使用 str.format() 方法格式化字符串的例子:
>>> name = "Alice"
>>> age = 30
>>> print("My name is {} and I am {} years old.".format(name, age))
My name is Alice and I am 30 years old.
你也可以通過(guò)給參數(shù)命名來(lái)替換占位符,例如:
>>> print("My name is {name} and I am {age} years old.".format(name=name, age=age))
My name is Alice and I am 30 years old.
你還可以重復(fù)使用相同的參數(shù),例如:
>>> print("My name is {name} and I am {age} years old. I repeated my name {name}".format(name=name, age=age))
My name is Alice and I am 30 years old. I repeated my name Alice
我們還是可以嘗試使用更復(fù)雜一點(diǎn)的參數(shù),例如:
>>> x = 12345.6789
>>> y = 98765.4321
>>> message = "x = {:.2f}, y = {:.2f}".format(x, y)
>>> print(message)
x = 12345.68, y = 98765.43
在這個(gè)示例中,我們使用 str.format() 方法來(lái)格式化兩個(gè)浮點(diǎn)數(shù) x 和 y。我們使用 :.2f 格式說(shuō)明符,將數(shù)字格式化為兩位小數(shù)。
一般來(lái)說(shuō),在Python 3.6版本之前,我們都推薦使用 string.format() 方法來(lái)格式化字符串。
“f-string”語(yǔ)法
在Python 3.6及更高版本中,Python提供了一種稱(chēng)為 f-string (也叫 f-strings 或 f-interpolation) 的新語(yǔ)法,可以更簡(jiǎn)單地格式化字符串。
f-string 的語(yǔ)法是通過(guò)在字符串前面加上一個(gè)前綴 f 或 F,然后在字符串中插入表達(dá)式的方式來(lái)格式化字符串。表達(dá)式需要用大括號(hào) {} 括起來(lái)。
例如,你可以使用以下代碼格式化字符串:
>>> name = "Alice"
>>> age = 30
>>> print(f"My name is {name} and I am {age} years old.")
My name is Alice and I am 30 years old.
你還可以在表達(dá)式中調(diào)用函數(shù)或運(yùn)算符,例如:
>>> import math
>>> print(f"2*2={2*2}, pi={math.pi}")
2*2=4, pi=3.141592653589793
也可以通過(guò)在表達(dá)式的后面添加一個(gè)冒號(hào)和格式說(shuō)明符來(lái)格式化輸出,例如,你可以使用以下語(yǔ)法來(lái)保留小數(shù)點(diǎn)后兩位:
>>> print(f"The value of pi is approximately {math.pi:.2f}.")
The value of pi is approximately 3.14.
你還可以使用冒號(hào)和格式說(shuō)明符來(lái)指定字符串的對(duì)齊方式、寬度和其他格式選項(xiàng)。
例如,你可以使用以下語(yǔ)法來(lái)左對(duì)齊一個(gè)字符串,并在右側(cè)填充空格以達(dá)到指定寬度:
>>> name = 'Alice'
>>> print(f"{name:<10}")
Alice
與 str.format() 方法類(lèi)似,f-string 方法也可以使用若干格式說(shuō)明符來(lái)指定格式:
:d或:i轉(zhuǎn)換為有符號(hào)十進(jìn)制整數(shù);:o轉(zhuǎn)換為無(wú)符號(hào)八進(jìn)制整數(shù);:x,:X轉(zhuǎn)換為無(wú)符號(hào)十六進(jìn)制整數(shù),x表示小寫(xiě),X表示大寫(xiě);:e,:E轉(zhuǎn)換為科學(xué)計(jì)數(shù)法,e表示小寫(xiě),E表示大寫(xiě);:f,:F轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù),f表示小寫(xiě),F表示大寫(xiě);:g,:G轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù),盡量使用科學(xué)計(jì)數(shù)法,g表示小寫(xiě),G表示大寫(xiě);:%轉(zhuǎn)換為百分?jǐn)?shù);:c轉(zhuǎn)換為字符;:s轉(zhuǎn)換為字符串;
如果你需要在字符串中插入大括號(hào),可以使用雙大括號(hào) {{}},這樣Python就會(huì)將它們當(dāng)作普通字符而不是占位符:
>>> print(f"{{name}} is a placeholder")
{name} is a placeholder
你還可以使用 f-string 格式化字典對(duì)象:
>>> person = {'name': 'Alice', 'age': 30}
>>> print(f"My name is {person['name']} and I am {person['age']} years old.")
My name is Alice and I am 30 years old.
目前,f-string 是Python中最簡(jiǎn)單,最快,也是最常用的字符串格式化方式,我們推薦開(kāi)發(fā)人員在Python 3.6及以上版本中使用。
總結(jié)
在Python開(kāi)發(fā)中,格式化字符串是一種重要的技術(shù),可以用于動(dòng)態(tài)創(chuàng)建包含變量、表達(dá)式和其他數(shù)據(jù)的字符串。它允許開(kāi)發(fā)人員通過(guò)將字符串的某些部分替換為變量、表達(dá)式或其他字符串的值來(lái)構(gòu)造復(fù)雜的字符串。
在Python中,目前有三種主要的格式化字符串方法,包括 % 格式化方法、str.format() 方法和 f-strings 方法。我們推薦開(kāi)發(fā)人員在Python 3.6及以上版本中使用 f-string 方法來(lái)格式化字符串。
以上就是Python中字符串格式化的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python字符串格式化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
django配置使用asgi的實(shí)現(xiàn)步驟
本文主要介紹了django配置使用asgi的實(shí)現(xiàn)步驟,支持 ASGI 協(xié)議能處理傳統(tǒng)HTTP請(qǐng)求,也能支持實(shí)時(shí)WebSocket通信,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03
Python中__new__和__init__的區(qū)別與聯(lián)系
這篇文章主要介紹了Python中__new__和__init__的區(qū)別與聯(lián)系,需要的朋友可以參考下2021-05-05
pandas讀取Excel批量轉(zhuǎn)換時(shí)間戳的實(shí)踐
本文主要介紹了pandas讀取Excel批量轉(zhuǎn)換時(shí)間戳的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
15個(gè)應(yīng)該掌握的Jupyter Notebook使用技巧(小結(jié))
這篇文章主要介紹了15個(gè)應(yīng)該掌握的Jupyter Notebook使用技巧(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
基于Python實(shí)現(xiàn)評(píng)論區(qū)抽獎(jiǎng)功能詳解
這篇文章主要為大家介紹了基于Python如何實(shí)現(xiàn)評(píng)論區(qū)抽獎(jiǎng)的功能,文章的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的朋友可以學(xué)習(xí)一下2021-12-12

