詳解Python3 中的字符串格式化語(yǔ)法
一、舊式的字符串格式化
% 操作符
參考以下示例:
>>> name = "Eric" >>> "Hello, %s." % name 'Hello, Eric.'
當(dāng)有多個(gè)變量需要插入到字符串中時(shí):
>>> name = "Eric" >>> age = 74 >>> "Hello, %s. You are %s." % (name, age) 'Hello, Eric. You are 74.'
當(dāng)需要替換的變量進(jìn)一步增多時(shí),使用 % 操作符格式化字符串會(huì)導(dǎo)致代碼可讀性變得很差:
>>> first_name = "Eric" >>> last_name = "Idle" >>> age = 74 >>> profession = "comedian" >>> affiliation = "Monty Python" >>> "Hello, %s %s. You are %s. You are a %s. You were a member of %s." % (first_name, last_name, age, profession, affiliation) 'Hello, Eric Idle. You are 74. You are a comedian. You were a member of Monty Python.'
str.format()
str.format() 是對(duì) % 方式的改進(jìn),它使用常見(jiàn)的函數(shù)調(diào)用的語(yǔ)法,并且可以通過(guò)定義對(duì)象本身的 __format__() 方法控制字符串格式化的具體行為。
基本用法:
>>> name = "Eric"
>>> age = 74
>>> "Hello, {}. You are {}.".format(name, age)
'Hello, Eric. You are 74.'
str.format() 相對(duì)于 % 操作符有著更強(qiáng)的靈活性。比如可以通過(guò)數(shù)字索引來(lái)關(guān)聯(lián)替換到字符串中的變量:
>>> name = "Eric"
>>> age = 74
>>> "Hello, {1}. You are {0}.".format(age, name)
'Hello, Eric. You are 74.'
為了提高代碼可讀性, {} 中也可以使用有具體含義的參數(shù)名:
>>> name = "Eric"
>>> age = 74
>>> "Hello, {name}. You are {age}".format(name=name, age=age)
'Hello, Eric. You are 74'
針對(duì)字典結(jié)構(gòu)的數(shù)據(jù):
>>> person = {'name': 'Eric', 'age': 74}
>>> "Hello, {name}. You are {age}.".format(name=person['name'], age=person['age'])
'Hello, Eric. You are 74.'
或者更簡(jiǎn)潔的方式:
>>> person = {'name': 'Eric', 'age': 74}
>>> "Hello, {name}. You are {age}.".format(**person)
'Hello, Eric. You are 74.'
問(wèn)題在于當(dāng)需要替換的變量很多時(shí), str.format() 方式依然會(huì)導(dǎo)致代碼變得過(guò)于冗長(zhǎng):
>>> first_name = "Eric"
>>> last_name = "Idle"
>>> age = 74
>>> profession = "comedian"
>>> affiliation = "Monty Python"
>>> "Hello, {first_name} {last_name}. You are {age}. \
You are a {profession}. You were a member of {affiliation}."\
.format(first_name=first_name, last_name=last_name, age=age, \
profession=profession, affiliation=affiliation)
'Hello, Eric Idle. You are 74. You are a comedian. You were a member of Monty Python.'
二、f-string
基本用法
>>> name = "Eric"
>>> age = 74
>>> f"Hello, {name}. You are {age}."
'Hello, Eric. You are 74.'
嵌入表達(dá)式
>>> f"{2 * 37}"
'74'
>>> def to_lowercase(input):
... return input.lower()
>>> name = "Eric Idle"
>>> f"{to_lowercase(name)} is funny"
'eric idle is funny'
>>> f"{name.lower()} is funny"
'eric idle is funny'
f-string 中還可以直接嵌入某個(gè)對(duì)象實(shí)例,只要其內(nèi)部實(shí)現(xiàn)了 __str__ 或者 __repr__ 方法:
class Comedian:
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
def __str__(self):
return f"{self.first_name} {self.last_name} is {self.age}"
new_comedian = Comedian("Eric", "Idle", 74)
print(f"{new_comedian}")
# Eric Idle is 74
多行 f-string
>>> name = "Eric"
>>> profession = "comedian"
>>> affiliation = "Monty Python"
>>> message = (
... f"Hi {name}. "
... f"You are a {profession}. "
... f"You were in {affiliation}."
... )
>>> message
'Hi Eric. You are a comedian. You were in Monty Python.'
總結(jié)
以上所述是小編給大家介紹的Python3 中的字符串格式化語(yǔ)法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解
今天小編就為大家分享一篇python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python讀取nc數(shù)據(jù)并繪圖的方法實(shí)例
最近項(xiàng)目中需要處理和分析NC數(shù)據(jù),所以下面這篇文章主要給大家介紹了關(guān)于python讀取nc數(shù)據(jù)并繪圖的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
python保留小數(shù)點(diǎn)位數(shù)的多種方式(附demo)
在Python中,保留小數(shù)點(diǎn)后特定位數(shù)可以通過(guò)多種方式實(shí)現(xiàn),以下是幾種常見(jiàn)的方法,并附上相應(yīng)的代碼示例,使用字符串格式化,使用round()函數(shù),使用Decimal模塊和使用numpy庫(kù),文中通過(guò)代碼講解的非常詳細(xì),需要的朋友可以參考下2024-06-06
Python求解任意閉區(qū)間的所有素?cái)?shù)
本篇文章是一篇關(guān)于python求素?cái)?shù)的知識(shí)點(diǎn)內(nèi)容,如果大家在應(yīng)用中有用的到,不妨跟著學(xué)習(xí)下。2018-06-06
python解壓縮文件或文件夾兩種常見(jiàn)方式(附代碼)
這篇文章主要介紹了python解壓縮文件或文件夾兩種常見(jiàn)方式,Python的zipfile和shutil模塊提供了強(qiáng)大的文件和文件夾壓縮與解壓縮功能,zipfile模塊適合精細(xì)控制,而shutil模塊則快速簡(jiǎn)單,文中提供了詳細(xì)的代碼示例,需要的朋友可以參考下2025-04-04
Python3 tkinter 實(shí)現(xiàn)文件讀取及保存功能
tkinter是一個(gè)跨平臺(tái)的GUI庫(kù),開(kāi)發(fā)的程序可以在win,linux或者mac下運(yùn)行,tkinter是python自帶的GUI庫(kù),是對(duì)圖形庫(kù)TK的封裝。本文通過(guò)實(shí)例代碼給大家介紹Python3 tkinter 實(shí)現(xiàn)文件讀取及保存功能,感興趣的朋友跟隨小編一起看看吧2019-09-09
Python實(shí)現(xiàn)的求解最小公倍數(shù)算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的求解最小公倍數(shù)算法,涉及Python數(shù)值運(yùn)算、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
Python素?cái)?shù)檢測(cè)實(shí)例分析
這篇文章主要介紹了Python素?cái)?shù)檢測(cè)方法,實(shí)例分析了Python判定素?cái)?shù)的相關(guān)技巧,需要的朋友可以參考下2015-06-06

