Python中字符串格式化的方法詳解
引子
眾所周知,我們可以使用 print()
方法來輸出一個(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
方法(也稱為格式化字符串字面量)。每種方法都有其自己的優(yōu)點(diǎn)和缺點(diǎn),但它們都可以用于格式化字符串。
在Python 3.6版本之前,我們推薦使用 str.format()
方法格式化字符串。該方法通過將字符串中的占位符替換為值來格式化字符串。該方法具有多個(gè)可選參數(shù),允許開發(fā)人員自定義輸出的格式。
str.format()
方法的基本語法為:
string.format(value1, value2, ...)
其中,string
是我們要格式化的字符串,value1
、value2
等是要替換到字符串中的占位符的值。
字符串中的占位符由成對(duì)的大括號(hào) {}
表示。在大括號(hào)內(nèi)部,我們可以使用格式說明符來控制被替換的值的格式。
以下是一些常用的格式說明符:
{}
這是最簡(jiǎn)單的格式說明符,它只是原樣替換值。
{:<N}
這個(gè)說明符將值左對(duì)齊,并在右側(cè)填充空格,以達(dá)到總寬度N。
{:>N}
這個(gè)說明符將值右對(duì)齊,并在左側(cè)填充空格,以達(dá)到總寬度N。
{:^N}
這個(gè)說明符將值居中,并在兩側(cè)填充空格,以達(dá)到總寬度N。
{:.Nf}
這個(gè)說明符將浮點(diǎn)數(shù)格式化為N位小數(shù)。
{:.Ng}
這個(gè)說明符將數(shù)字格式化為N位有效數(shù)字。
{:.N%}
這個(gè)說明符將浮點(diǎn)數(shù)格式化為帶有N位小數(shù)的百分比。
除了這些格式說明符外,str.format()方法還支持許多其他參數(shù):
sep
指定在連接多個(gè)值時(shí)要使用的分隔符字符。
end
指定要附加到輸出結(jié)尾的字符串。
file
指定要將輸出寫入的文件對(duì)象。
flush
指定在寫入輸出后是否刷新輸出緩沖區(qū)。
下面,我們來看幾個(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.
你也可以通過給參數(shù)命名來替換占位符,例如:
>>> 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()
方法來格式化兩個(gè)浮點(diǎn)數(shù) x
和 y
。我們使用 :.2f
格式說明符,將數(shù)字格式化為兩位小數(shù)。
一般來說,在Python 3.6版本之前,我們都推薦使用 string.format()
方法來格式化字符串。
“f-string”語法
在Python 3.6及更高版本中,Python提供了一種稱為 f-string
(也叫 f-strings
或 f-interpolation
) 的新語法,可以更簡(jiǎn)單地格式化字符串。
f-string
的語法是通過在字符串前面加上一個(gè)前綴 f
或 F
,然后在字符串中插入表達(dá)式的方式來格式化字符串。表達(dá)式需要用大括號(hào) {}
括起來。
例如,你可以使用以下代碼格式化字符串:
>>> 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
也可以通過在表達(dá)式的后面添加一個(gè)冒號(hào)和格式說明符來格式化輸出,例如,你可以使用以下語法來保留小數(shù)點(diǎn)后兩位:
>>> print(f"The value of pi is approximately {math.pi:.2f}.") The value of pi is approximately 3.14.
你還可以使用冒號(hào)和格式說明符來指定字符串的對(duì)齊方式、寬度和其他格式選項(xiàng)。
例如,你可以使用以下語法來左對(duì)齊一個(gè)字符串,并在右側(cè)填充空格以達(dá)到指定寬度:
>>> name = 'Alice' >>> print(f"{name:<10}") Alice
與 str.format()
方法類似,f-string
方法也可以使用若干格式說明符來指定格式:
:d
或:i
轉(zhuǎn)換為有符號(hào)十進(jìn)制整數(shù);:o
轉(zhuǎn)換為無符號(hào)八進(jìn)制整數(shù);:x
,:X
轉(zhuǎn)換為無符號(hào)十六進(jìn)制整數(shù),x
表示小寫,X
表示大寫;:e
,:E
轉(zhuǎn)換為科學(xué)計(jì)數(shù)法,e
表示小寫,E
表示大寫;:f
,:F
轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù),f
表示小寫,F
表示大寫;:g
,:G
轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù),盡量使用科學(xué)計(jì)數(shù)法,g
表示小寫,G
表示大寫;:%
轉(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)單,最快,也是最常用的字符串格式化方式,我們推薦開發(fā)人員在Python 3.6及以上版本中使用。
總結(jié)
在Python開發(fā)中,格式化字符串是一種重要的技術(shù),可以用于動(dòng)態(tài)創(chuàng)建包含變量、表達(dá)式和其他數(shù)據(jù)的字符串。它允許開發(fā)人員通過將字符串的某些部分替換為變量、表達(dá)式或其他字符串的值來構(gòu)造復(fù)雜的字符串。
在Python中,目前有三種主要的格式化字符串方法,包括 %
格式化方法、str.format()
方法和 f-strings
方法。我們推薦開發(fā)人員在Python 3.6及以上版本中使用 f-string
方法來格式化字符串。
以上就是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-03Python中__new__和__init__的區(qū)別與聯(lián)系
這篇文章主要介紹了Python中__new__和__init__的區(qū)別與聯(lián)系,需要的朋友可以參考下2021-05-05pandas讀取Excel批量轉(zhuǎn)換時(shí)間戳的實(shí)踐
本文主要介紹了pandas讀取Excel批量轉(zhuǎn)換時(shí)間戳的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-0215個(gè)應(yīng)該掌握的Jupyter Notebook使用技巧(小結(jié))
這篇文章主要介紹了15個(gè)應(yīng)該掌握的Jupyter Notebook使用技巧(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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