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

