Python中format格式化的用法及說明
可以通過下面幾種方式來實現(xiàn)
1、使用{}作為占位符,通過索引來指定要替換的參數(shù),如:
# 替換第一個參數(shù)
"Hello {}, Welcome to Python world!".format("Tom")
# 替換第二個參數(shù)
"Hello {1}, Welcome to Python world! I'm {0}".format("Tom", "Alice")
2、使用{}作為占位符,通過參數(shù)名來指定要替換的參數(shù),如:
# 替換name參數(shù)
"Hello {name}, Welcome to Python world!".format(name="Tom")
# 替換name和age參數(shù)
"Hello {name}, Welcome to Python world! I'm {age}".format(name="Tom", age=20)
3、使用{}作為占位符,通過指定參數(shù)位置和類型來進(jìn)行格式化,如:
# 使用:指定參數(shù)類型和格式,d表示整數(shù),f表示浮點數(shù),s表示字符串
"Hello {0:s}, Welcome to Python world! I'm {1:d} years old".format("Tom", 20)
"Hello {0:s}, Welcome to Python world! I'm {1:f} meters tall".format("Tom", 1.75)
有以下幾個注意事項
1、如果使用了{}作為占位符,那么參數(shù)中不能出現(xiàn){}字符,否則會拋出異常,應(yīng)該使用{{}}來表示{字符,如:
# 錯誤用法
"Hello {name}, Welcome to Python world! I'm from {{China}}".format(name="Tom")
# 正確用法
"Hello {name}, Welcome to Python world! I'm from {country}".format(name="Tom", country="China")
2、在format函數(shù)中,如果指定了參數(shù)名或位置,那么參數(shù)的順序并不重要,如:
# 不同的參數(shù)順序
"Hello {0}, Welcome to Python world! I'm {1} years old".format(20, "Tom")
"Hello {1}, Welcome to Python world! I'm {0} years old".format(20, "Tom")
3、在format函數(shù)中,如果使用了參數(shù)名或位置,那么在調(diào)用時,必須保證提供了對應(yīng)的參數(shù),否則會拋出異常,如:
# 錯誤用法,沒有提供name參數(shù)
"Hello {name}, Welcome to Python world!".format()
# 正確用法
"Hello {name}, Welcome to Python world!".format(name="Tom")
4、在format函數(shù)中,如果沒有使用參數(shù)名或位置,那么參數(shù)的順序必須與占位符的順序一致,否則會拋出異常,如:
# 錯誤用法,參數(shù)順序不一致
"Hello {}, Welcome to Python world! I'm {} years old".format(20, "Tom")
# 正確用法
"Hello {}, Welcome to Python world! I'm {} years old".format("Tom", 20)
5、在format函數(shù)中,如果使用了參數(shù)名或位置,那么在調(diào)用時可以提供多余的參數(shù),這些參數(shù)不會被使用,如:
# 提供了多余的參數(shù)
"Hello {name}, Welcome to Python world!".format(name="Tom", age=20)
6、在format函數(shù)中,可以使用**kwargs參數(shù)將一個字典中的所有鍵值對作為參數(shù)傳遞給format函數(shù),如:
# 使用**kwargs傳遞參數(shù)
params = {"name": "Tom", "age": 20}
"Hello {name}, Welcome to Python world! I'm {age} years old".format(**params)
7、在format函數(shù)中,如果使用了{}作為占位符,那么可以使用format_map函數(shù)來替換占位符,其中format_map函數(shù)的參數(shù)必須是一個映射對象,如:
# 使用format_map函數(shù)替換占位符
params = {"name": "Tom", "age": 20}
"Hello {name}, Welcome to Python world! I'm {age} years old".format_map(params)
8、在format函數(shù)中,如果需要對字符串進(jìn)行多次替換,那么可以使用format_map函數(shù),它可以直接在字符串上調(diào)用,而不用重新創(chuàng)建一個新的字符串,如:
# 使用format_map函數(shù)進(jìn)行多次替換
params = {"name": "Tom", "age": 20}
s = "Hello {name}, Welcome to Python world! I'm {age} years old"
new = s.format_map(params)
print(new)
# 更新參數(shù),并繼續(xù)替換
params["age"] = 21
new_2 = s.format_map(params)
print(new_2)
9、在format函數(shù)中,如果使用了{}作為占位符,那么可以使用vars函數(shù)自動將一個對象的屬性作為參數(shù)傳遞給format函數(shù),如:
# 使用vars函數(shù)自動將一個對象的屬性作為參數(shù)傳遞給format函數(shù)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("Tom", 20)
"Hello {name}, Welcome to Python world! I'm {age} years old".format(**vars(p))
10、在format函數(shù)中,如果使用了{}作為占位符,那么可以使用Template類來實現(xiàn)字符串的模板化,可以通過$來指定參數(shù)名,并通過safe_substitute函數(shù)來替換占位符,如:
# 使用Template類實現(xiàn)字符串的模板化
from string import Template
s = Template("Hello $name, Welcome to Python world! I'm $age years old")
s.safe_substitute(name="Tom", age=20)
11、在format函數(shù)中,如果使用了{}作為占位符,那么可以通過f-string來實現(xiàn)字符串的替換,f-string必須使用Python3.6或更高版本,它支持在字符串中直接使用變量名,并通過{}包裹,如:
# 使用f-string實現(xiàn)字符串的替換
name = "Tom"
age = 20
f"Hello {name}, Welcome to Python world! I'm {age} years old"
12、在format函數(shù)中,如果需要對字符串進(jìn)行格式化,那么可以使用format函數(shù)的相關(guān)參數(shù),如align、width、precision等來控制字符串的對齊方式、寬度、精度等,如:
# 使用format函數(shù)的相關(guān)參數(shù)進(jìn)行格式化
name = "Tom"
age = 20
# 左對齊,寬度為20,小數(shù)點后保留2位
"Hello {0:<20.2f}".format(name, age)
# 右對齊,寬度為20,小數(shù)點后保留2位
"Hello {0:>20.2f}".format(name, age)
# 居中對齊,寬度為20,小數(shù)點后保留2位
"Hello {0:^20.2f}".format(name, age)
13、在format函數(shù)中,如果需要對數(shù)字進(jìn)行格式化,那么可以使用format函數(shù)的相關(guān)參數(shù),如:
# 千分位分隔符
"{:,}".format(123456789)
# 百分?jǐn)?shù)
"{:.2%}".format(0.8)
# 科學(xué)計數(shù)法
"{:.2e}".format(123456789)
# 十六進(jìn)制
"{:x}".format(255)
14、在format函數(shù)中,如果需要對日期時間進(jìn)行格式化,那么可以使用strftime函數(shù)來指定日期時間的格式化字符串,如:
# 使用strftime函數(shù)格式化日期時間
from datetime import datetime
dt = datetime.now()
print(dt)
a = dt.strftime("%Y-%m-%d %H:%M:%S")
print(a)
# 輸出
# 2022-12-09 16:51:09.534693
# 2022-12-09 16:51:09
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
matplotlib subplots 設(shè)置總圖的標(biāo)題方法
今天小編就為大家分享一篇matplotlib subplots 設(shè)置總圖的標(biāo)題方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
理解Python數(shù)據(jù)離散化手寫if-elif語句與pandas中cut()方法實現(xiàn)
這篇文章主要介紹了通過手寫if-elif語句與pandas中cut()方法實現(xiàn)示例理解Python數(shù)據(jù)離散化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
Python中的"沒有那個文件"錯誤(FileNotFoundError)的解決方法詳解
在Python編程中,遇到“沒有那個文件”錯誤(FileNotFoundError)是常見的問題之一,本文將詳細(xì)分析這個錯誤的原因,并提供實用的解決方案和指南,有需要的可以參考下2024-11-11
Python+SQLAlchemy輕松實現(xiàn)管理數(shù)據(jù)庫
QLAlchemy是一個強大的ORM(對象關(guān)系映射)庫,它允許您通過Python代碼與關(guān)系型數(shù)據(jù)庫進(jìn)行交互,本文我們將學(xué)習(xí)如何使用Python和SQLAlchemy庫來輕松管理數(shù)據(jù)庫,需要的可以參考下2023-05-05
Python基礎(chǔ)之字符串操作常用函數(shù)集合
這篇文章主要介紹了Python基礎(chǔ)之字符串操作常用函數(shù)集合,需要的朋友可以參考下2020-02-02

