Python?format()函數(shù)進行高級字符串格式化詳解
一、format()函數(shù)基礎(chǔ)用法
1. 基本語法
"模板字符串".format(參數(shù)1, 參數(shù)2, ...)
2. 三種基本使用方式
(1) 位置參數(shù)
print("{}的{}成績是{}".format("張三", "數(shù)學", 95))
# 輸出: 張三的數(shù)學成績是95
(2) 索引參數(shù)
print("{0}的{2}成績是{1}".format("張三", 95, "數(shù)學"))
# 輸出: 張三的數(shù)學成績是95
(3) 命名參數(shù)
print("{name}的{subject}成績是{score}".format(
name="李四",
subject="英語",
score=88
))
# 輸出: 李四的英語成績是88
二、數(shù)字格式化
1. 基本數(shù)字格式化語法
"{:[填充][對齊][符號][寬度][,][.精度][類型]}".format(數(shù)字)
2. 常用數(shù)字格式化示例
| 格式化需求 | 格式字符串 | 示例代碼 | 輸出結(jié)果 |
|---|---|---|---|
| 保留2位小數(shù) | {:.2f} | "{:.2f}".format(3.14159) | 3.14 |
| 千分位分隔 | {:,} | "{:,}".format(1234567) | 1,234,567 |
| 百分比顯示 | {:.2%} | "{:.2%}".format(0.4567) | 45.67% |
| 十六進制 | {:x} | "{:x}".format(255) | ff |
| 二進制 | {:b} | "{:b}".format(10) | 1010 |
| 科學計數(shù)法 | {:.2e} | "{:.2e}".format(123456) | 1.23e+05 |
3. 對齊與填充
| 格式化需求 | 格式字符串 | 示例代碼 | 輸出結(jié)果 |
|---|---|---|---|
| 右對齊(默認) | {:10} | "{:10}".format(123) | 123 |
| 左對齊 | {:<10} | "{:<10}".format(123) | 123 |
| 居中對齊 | {:^10} | "{:^10}".format(123) | 123 |
| 用0填充 | {:010} | "{:010}".format(123) | 0000000123 |
| 用*填充 | {:*^10} | "{:*^10}".format(123) | ***123**** |
# 綜合示例:銀行金額顯示
amount = 1234567.8912
print("賬戶余額: {:,.2f}元".format(amount))
# 輸出: 賬戶余額: 1,234,567.89元
三、字符串格式化
1. 字符串對齊與截斷
| 格式化需求 | 格式字符串 | 示例代碼 | 輸出結(jié)果 |
|---|---|---|---|
| 右對齊 | {:>10} | "{:>10}".format("hello") | hello |
| 左對齊 | {:<10} | "{:<10}".format("hello") | hello |
| 居中對齊 | {:^10} | "{:^10}".format("hello") | hello |
| 截斷字符串 | {:.3} | "{:.3}".format("hello") | hel |
2. 填充與對齊結(jié)合
# 表格格式化示例
data = [("蘋果", 5.5, 10), ("香蕉", 3.2, 8), ("橙子", 4.8, 15)]
for item in data:
print("{:<8} 單價: {:>5.2f}元 庫存: {:03d}".format(*item))
# 輸出:
# 蘋果 單價: 5.50元 庫存: 010
# 香蕉 單價: 3.20元 庫存: 008
# 橙子 單價: 4.80元 庫存: 015
四、高級格式化技巧
1. 訪問對象屬性
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("王五", 30)
print("{0.name}今年{0.age}歲".format(p))
# 輸出: 王五今年30歲
2. 訪問字典元素
data = {"name": "趙六", "score": 92}
print("學生{name}的成績是{score}".format(**data))
# 輸出: 學生趙六的成績是92
3. 訪問列表元素
items = ["手機", "電腦", "平板"]
print("產(chǎn)品1: {0[0]}, 產(chǎn)品2: {0[1]}".format(items))
# 輸出: 產(chǎn)品1: 手機, 產(chǎn)品2: 電腦
4. 動態(tài)格式化
# 根據(jù)條件動態(tài)設(shè)置格式
for num in [123, 12345, 1234567]:
print("{:{align}{width},}".format(num, align=">", width=10))
# 輸出:
# 123
# 12,345
# 1,234,567
五、特殊格式化
1. 大括號轉(zhuǎn)義
# 顯示大括號本身
print("{{}}是format使用的括號".format())
# 輸出: {}是format使用的括號
2. 日期時間格式化
from datetime import datetime
now = datetime.now()
print("{:%Y-%m-%d %H:%M:%S}".format(now))
# 輸出: 2023-08-15 14:30:45 (當前時間)
3. 自定義格式化
class Temperature:
def __init__(self, celsius):
self.celsius = celsius
def __format__(self, format_spec):
if format_spec == "f":
return f"{self.celsius * 9/5 + 32:.1f}°F"
return f"{self.celsius:.1f}°C"
temp = Temperature(25)
print("溫度: {:f}".format(temp)) # 輸出: 溫度: 77.0°F
print("溫度: {}".format(temp)) # 輸出: 溫度: 25.0°C六、性能比較
1. 各種格式化方式對比
| 格式化方式 | Python版本 | 可讀性 | 性能 | 功能 |
|---|---|---|---|---|
| %格式化 | 所有版本 | 一般 | 快 | 有限 |
| str.format() | 2.6+ | 好 | 中 | 強大 |
| f-string | 3.6+ | 最好 | 最快 | 強大 |
2. 何時使用format()
? 適合場景:
- Python 2.6到3.5版本
- 需要復用格式模板
- 復雜的格式化需求
- 需要動態(tài)格式字符串
? 不適合場景:
- Python 3.6+簡單格式化(用f-string更好)
- 極高性能要求的場景
七、實際應用案例
案例1:生成報表
# 銷售報表生成
sales_data = [
("筆記本電腦", 12, 5999.99),
("智能手機", 25, 3999.50),
("平板電腦", 8, 2999.00)
]
# 表頭
print("{:<15} {:>10} {:>15} {:>15}".format(
"產(chǎn)品名稱", "銷售數(shù)量", "單價", "總金額"))
print("-" * 60)
# 表格內(nèi)容
for product, quantity, price in sales_data:
total = quantity * price
print("{:<15} {:>10d} {:>15,.2f} {:>15,.2f}".format(
product, quantity, price, total))
# 輸出示例:
# 產(chǎn)品名稱 銷售數(shù)量 單價 總金額
# ------------------------------------------------------------
# 筆記本電腦 12 5,999.99 71,999.88
# 智能手機 25 3,999.50 99,987.50
# 平板電腦 8 2,999.00 23,992.00
案例2:日志格式化
def log_message(level, message):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print("[{:<5}] {:<20} {}".format(level, timestamp, message))
log_message("INFO", "系統(tǒng)啟動完成")
log_message("ERROR", "文件打開失敗")
# 輸出示例:
# [INFO ] 2023-08-15 14:45:30 系統(tǒng)啟動完成
# [ERROR] 2023-08-15 14:46:12 文件打開失敗
八、總結(jié)
format()函數(shù)核心要點:
1.基本用法:位置參數(shù){}、索引參數(shù){0}、命名參數(shù){name}
2.數(shù)字格式化:
- 精度控制:
{:.2f} - 千分位:
{:,} - 對齊填充:
{:0>10}
3.字符串格式化:對齊{:<10}、截斷{:.5}
4.高級特性:
- 訪問對象屬性
{obj.attr} - 動態(tài)格式
{:{width}} - 自定義
__format__方法
5.特殊格式:日期時間、大括號轉(zhuǎn)義
format()提供了Python中最強大、最靈活的字符串格式化能力,特別適合需要復雜格式控制的場景。雖然Python 3.6+引入了更簡潔的f-string,但在需要復用格式模板或兼容舊版本Python時,format()仍然是不可或缺的工具。
以上就是Python format()函數(shù)進行高級字符串格式化詳解的詳細內(nèi)容,更多關(guān)于Python format字符串格式化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python教程網(wǎng)絡(luò)爬蟲及數(shù)據(jù)可視化原理解析
這篇文章主要為大家介紹了python教程中網(wǎng)絡(luò)爬蟲及數(shù)據(jù)可視化原理的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2021-10-10
基于Python編寫一個計算器程序,實現(xiàn)簡單的加減乘除和取余二元運算
這篇文章主要介紹了基于Python編寫一個計算器程序,實現(xiàn)簡單的加減乘除和取余二元運算,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08
用Python編寫一個簡單的FUSE文件系統(tǒng)的教程
這篇文章主要介紹了用Python編寫一個簡單的FUSE文件系統(tǒng)的教程,對于數(shù)據(jù)的備份很有幫助,需要的朋友可以參考下2015-04-04
用實例詳解Python中的Django框架中prefetch_related()函數(shù)對數(shù)據(jù)庫查詢的優(yōu)化
這篇文章主要介紹了用實例詳解Python中的Django框架中prefetch_related()函數(shù)對數(shù)據(jù)庫查詢的優(yōu)化,可減少對數(shù)據(jù)庫的查詢次數(shù)從而優(yōu)化性能,需要的朋友可以參考下2015-04-04
Python機器學習NLP自然語言處理基本操作之京東評論分類
自然語言處理( Natural Language Processing, NLP)是計算機科學領(lǐng)域與人工智能領(lǐng)域中的一個重要方向。它研究能實現(xiàn)人與計算機之間用自然語言進行有效通信的各種理論和方法2021-10-10

