最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中格式化字符串的方法總結(jié)

 更新時(shí)間:2024年10月31日 09:49:46   作者:仙草哥哥  
字符串格式化是一項(xiàng)常見且重要的操作,用于動(dòng)態(tài)生成包含變量?jī)?nèi)容的字符串,本文為大家整理一些常用的格式化字符串方法,希望對(duì)大家有所幫助

字符串格式化

字符串格式化是一項(xiàng)常見且重要的操作,用于動(dòng)態(tài)生成包含變量?jī)?nèi)容的字符串。關(guān)于字符串的格式化,在python的歷史上,曾經(jīng)存在多種格式化字符串的方式,因此,這可能帶來困擾,一些人可能不清楚應(yīng)該使用哪一種格式化方法,下面,我就進(jìn)行一下詳細(xì)的介紹。

當(dāng)前推薦做法:f-string

毫無疑問,f-string是現(xiàn)在最適合的字符串格式化的方法,因此首先進(jìn)行介紹。f-string最早引入自3.6,因此需要3.6以后版本的python可以使用。

使用方法: 在字符串前加上 f 或 F,并在花括號(hào) {} 內(nèi)填入變量或者表達(dá)式。

name = "sagegrass"
age = 18
greeting = f"你好,我的名字是{name},我今年{age}歲,我去年{age - 1}歲"
 
print(greeting)

在python3.8以后,加入了f-string調(diào)試支持,使用方法為在變量或者表達(dá)式以后添加=,從而同時(shí)輸出名稱和結(jié)果。

name = "sagegrass"
print(f"{name=}") # 此時(shí)輸出結(jié)果為name=sagegrass

歷史做法

%格式化

歷史做法是在以前版本的python中非常常見的做法,你可以在很多較早期的代碼中看見,并且,時(shí)至今日也并非完全沒有使用價(jià)值,一些人可能現(xiàn)在仍然這樣做(但最好應(yīng)該改為使用f-string)。

%格式化是python中最早的字符串格式化方法,已經(jīng)有幾十年的歷史了,最早從c語言中繼承過來的。

使用方法: "格式字符串" % 值

name = "sagegrass"
age = 18
greeting = "你好,我的名字是%s,我今年%d歲,我去年%d歲" % (name, age, age - 1)
 
print(greeting)

其中,%s用于字符串,%d用于整型,另外還有一個(gè)常用的是%f,用于浮點(diǎn)數(shù)的格式化。但是由于其較為古老,既不好用,也容易出現(xiàn)問題,因此現(xiàn)在已經(jīng)不建議使用了。

format格式化

format格式化是在python2.6以及3.0時(shí)期引入的,format提供了更強(qiáng)大和靈活的字符串格式化功能。

使用方法:"格式字符串".format(值1, 值2, ...)

p1 = "鋤禾"
p2 = "當(dāng)午"
p3 = "汗滴"
p4 = "下土"
poem = "{}日{(diào)},{}禾{}".format(p1, p2, p3, p4)
 
print(poem)

format格式化還允許提供位置參數(shù),多次使用同一個(gè)變量。

p1 = "一寸"
p2 = "光陰"
p3 = "金"
poem = "{0}{1}{0}{2},寸{2}難買寸{1}".format(p1, p2, p3)
 
print(poem)

format格式化還允許提供關(guān)鍵字參數(shù),根據(jù)指定參數(shù)名使用。

name = "sagegrass"
age = 18
greeting = "你好,我的名字是{name},我今年{age}歲,我去年{age_of_last_year}歲".format(name=name, age=age, age_of_last_year=age - 1)
 
print(greeting)

與%格式化字符串不同,format至今仍然是一個(gè)非常不錯(cuò)的選擇,甚至在某些語言中,最新引入的格式化字符串的方式,就是類似format的方式。

Template格式化字符串

這是一個(gè)好的格式化字符串的方式,但是較少使用,這可能與其來自于string模塊,而不可以直接使用有一些關(guān)系。

from string import Template
 
name = "sagegrass"
age = 18
template = Template("你好,我的名字是$name,我今年$age歲,我去年$age_of_last_year歲")
greeting = template.substitute(name=name, age=age, age_of_last_year=age - 1)
 
print(greeting)

如果使用safe_substitute,那么在缺少變量的時(shí)候,也不會(huì)拋出異常,此時(shí)將保留原文

from string import Template
 
name = "sagegrass"
age = 18
template = Template("你好,我的名字是$name,我今年$age歲,我去年$age_of_last_year歲")
greeting = template.safe_substitute(name=name)
 
print(greeting) # 你好,我的名字是sagegrass,我今年$age歲,我去年$age_of_last_year歲

不常用做法

字符串拼接

還有一些做法,不是很好,如非特殊情況,不應(yīng)該作為一個(gè)字符串格式化的方法,下面簡(jiǎn)單的介紹,但是實(shí)際使用中應(yīng)該小心謹(jǐn)慎。

字符串拼接是通過例如+運(yùn)算符,將多個(gè)字符串拼接為一個(gè),它確實(shí)可以動(dòng)態(tài)的生成字符串,不過其實(shí)不算是一個(gè)格式化字符串的方式。

name = "sagegrass"
age = 18
greeting = "你好,我的名字是" + name + ",我今年" + str(age) +"歲,我去年" + str(age - 1) + "歲"
 
print(greeting)

這種方式確實(shí)簡(jiǎn)單易懂,但是缺點(diǎn)在于性能低下,且難以讀懂(尤其是在拼接字符串的數(shù)量變多的情況下)

str.join()連接

join()其實(shí)也不是用于進(jìn)行字符串格式化的,它通常用于一些其他的功能。它起到了和字符串拼接相似的功能,但是性能通常卻更好一點(diǎn),理論上是字符串拼接的上位替代,但是仍然不建議這樣做。

name = "sagegrass"
age = 18
greeting = "".join(("你好,我的名字是", name, ",我今年", str(age), "歲,我去年", str(age - 1), "歲"))
 
print(greeting)

自定義字符串格式化

只有非常特殊的需求才可能這樣做,一般情況下,這其實(shí)比較奇怪。

import re
 
def my_format(template, **kwargs):
    return re.sub(r'\{(\w+)\}', lambda match: str(kwargs.get(match.group(1), match.group(0))), template)
 
name = "sagegrass"
age = 18
greeting = my_format("你好,我的名字是{name},我今年{age}歲,我去年{age_of_last_year}歲", name=name, age=age, age_of_last_year=age - 1)
print(greeting)

缺點(diǎn)包括自定義可能產(chǎn)生一些錯(cuò)誤,或者是性能問題,好處在于可以按照自己的想法自定義格式化字符串的方法,并且添加一些需要的額外功能。

總結(jié)

2024年都快過完了,再有幾個(gè)月就是2025年了,對(duì)于新的代碼,目前(截止python3.12)應(yīng)該盡可能使用f-string,這在過去可能是一個(gè)問題,因?yàn)榍皫啄?,可能還有非常多的人在使用python3.5,這個(gè)版本沒有f-string功能,但是時(shí)至今日,3.7都已經(jīng)很罕見了,f-string的使用也不再是一個(gè)“版本”問題了。

以上就是Python中格式化字符串的方法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Python格式化字符串的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于python(urlparse)模板的使用方法總結(jié)

    基于python(urlparse)模板的使用方法總結(jié)

    下面小編就為大家?guī)硪黄趐ython(urlparse)模板的使用方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 使用Python-OpenCV消除圖像中孤立的小區(qū)域操作

    使用Python-OpenCV消除圖像中孤立的小區(qū)域操作

    這篇文章主要介紹了使用Python-OpenCV消除圖像中孤立的小區(qū)域操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 從零開始詳解Python的變量類型注解

    從零開始詳解Python的變量類型注解

    我發(fā)現(xiàn)很多初學(xué)者在使用變量時(shí)很隨意,這容易導(dǎo)致各種bug,本文小編就來和大家聊聊如何在定義變量時(shí)就明確類型,讓代碼更加通俗易懂,規(guī)范可靠,維護(hù)方便吧
    2025-11-11
  • django 數(shù)據(jù)庫(kù)返回queryset實(shí)現(xiàn)封裝為字典

    django 數(shù)據(jù)庫(kù)返回queryset實(shí)現(xiàn)封裝為字典

    這篇文章主要介紹了django 數(shù)據(jù)庫(kù)返回queryset實(shí)現(xiàn)封裝為字典,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法

    python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法

    今天小編就為大家分享一篇python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • pytorch訓(xùn)練imagenet分類的方法

    pytorch訓(xùn)練imagenet分類的方法

    今天小編就為大家分享一篇pytorch訓(xùn)練imagenet分類的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python實(shí)現(xiàn)Excel做表自動(dòng)化的最全方法合集

    Python實(shí)現(xiàn)Excel做表自動(dòng)化的最全方法合集

    Microsoft?Excel?是一款強(qiáng)大的辦公工具,廣泛用于數(shù)據(jù)分析、報(bào)告制作、預(yù)算管理等各種任務(wù),本文將深入探討如何使用?Python?進(jìn)行?Excel?表格的自動(dòng)化,需要的可以參考下
    2024-02-02
  • Python實(shí)現(xiàn)矩陣加法和乘法的方法分析

    Python實(shí)現(xiàn)矩陣加法和乘法的方法分析

    這篇文章主要介紹了Python實(shí)現(xiàn)矩陣加法和乘法的方法,結(jié)合實(shí)例形式對(duì)比分析了Python針對(duì)矩陣的加法與乘法運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Python 線程池模塊之多線程操作代碼

    Python 線程池模塊之多線程操作代碼

    最近在做一個(gè)爬蟲相關(guān)的項(xiàng)目,單線程的整站爬蟲,耗時(shí)真的不是一般的巨大,運(yùn)行一次也是心累,所以,要想實(shí)現(xiàn)整站爬蟲,多線程是不可避免的,那么python多線程又應(yīng)該怎樣實(shí)現(xiàn)呢?今天小編給大家分享下實(shí)現(xiàn)代碼,感興趣的朋友一起看看吧
    2021-05-05
  • Python中用Decorator來簡(jiǎn)化元編程的教程

    Python中用Decorator來簡(jiǎn)化元編程的教程

    這篇文章主要介紹了Python中用Decorator來簡(jiǎn)化元編程的教程,來自于IBM官方開發(fā)者技術(shù)文檔,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

鹿邑县| 张家口市| 山东| 故城县| 棋牌| 罗城| 祁连县| 德州市| 阳信县| 和田市| 色达县| 延津县| 花莲县| 津市市| 崇阳县| 桑植县| 西充县| 响水县| 大宁县| 桦甸市| 临清市| 舞阳县| 延寿县| 二手房| 昌乐县| 竹北市| 张家川| 滁州市| 泰安市| 安新县| 小金县| 宣恩县| 闽侯县| 嘉善县| 怀宁县| 河西区| 汕尾市| 海淀区| 连城县| 兴文县| 驻马店市|