str.format()
函数是 Python 中用于字符串格式化的强大工具。在构建输出字符串的时候,使用该函数可以做到更灵活地插入变量、控制输出格式、对齐以及设置数值精度等。str.format()
方法相较于旧式的 %
格式化赋予更多的控制和更高的可读性。本篇将详细探讨 str.format()
的多种用法和语法细节。
str.format()
是字符串对象的方法,使用时在字符串中写入一对花括号 {}
,然后对字符串调用 .format()
方法,通过传入参数来替换花括号中的内容。例如:
name = "Alice"
age = 30
greeting = "Hello, my name is {} and I am {} years old.".format(name, age)
print(greeting)
输出将是:
Hello, my name is Alice and I am 30 years old.
在 format()
方法中,花括号内部可以指定参数的索引位置来更明确地表示应该填充哪一个参数:
greeting = "Hello, my name is {0} and I am {1} years old.".format(name, age)
甚至可以重复使用传入值:
greeting = "Hello, {0}. {0} is {1} years old.".format(name, age)
通过 .format()
方法,我们也可以通过关键字参数传入参数,这样就不必依赖位置顺序:
greeting = "Hello, my name is {name} and I am {age} years old.".format(name="Alice", age=30)
这使得每一个替换字段都更加自解释和灵活。
str.format()
提供了几种不同的方式去调整字符串的对齐方式:
<
: 左对齐(默认)>
: 右对齐^
: 居中对齐例如:
print("{:<10}".format("test")) # 左对齐
print("{:>10}".format("test")) # 右对齐
print("{:^10}".format("test")) # 居中对齐
对齐的同时可以使用指定字符填充空位,通过在对齐符号前面加上一个字符实现:
print("{:_<10}".format("test")) # 测试用 '_' 左填充
print("{:*^10}".format("test")) # 用 '*' 居中填充
str.format()
也可以用来格式化数值,比如设置浮点数的小数点精度或输出为不同的进制格式:
pi = 3.14159265
print("{:.2f}".format(pi)) # 输出为 3.14,但不进行四舍五入
number = 255
print("{:x}".format(number)) # 输出为 'ff',即十六进制
关键是使用冒号:
后接特定的格式说明符来表示你想要的输出格式。
还可以利用格式化来转换数值的不同进制表示:
b
: 二进制o
: 八进制x
: 十六进制(小写)X
: 十六进制(大写)print("{:b}".format(255)) # 输出: 11111111
print("{:o}".format(255)) # 输出: 377
print("{:x}".format(255)) # 输出: ff
print("{:#X}".format(255) # 输出: 0XFF
对于大型数字,数值格式化中很常用的需求是增加千位分隔符:
number = 1234567890
print("{:,}".format(number)) # 输出: 1,234,567,890
而在处理百分数时,使用 '%
格式符可以自动乘以 100 并加上百分号:
percentage = 0.0456
print("{:.2%}".format(percentage)) # 输出: 4.56%
str.format()
方法还可以访问传入对象的属性或元素。假设有一个具备 .attribute
属性的对象,我们可以这么做:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 30)
print("Name: {0.name}, Age: {0.age}".format(person))
对于字典或列表等数据类型,使用索引或键可以方便地访问其中数据:
data = {'name': 'Alice', 'age': 30}
print("Name: {0[name]}, Age: {0[age]}".format(data))
Python 的 str.format()
提供了强大而灵活的字符串格式化功能,适用于各种复杂的数据插入和格式控制需求。无论是简单的变量插入、多变量操作、数据对齐、格式化输出还是对象的属性或方法调用,str.format()
几乎可以满足所有的需求。此外,Python 3.6 及以后的版本,更推荐使用格式化字符串字面量(f-string),其语法糖更加简洁且效率更高。无论选择哪一种方式,适当了解 str.format()
的灵活用法始终是有益的。