在 Python 中,格式化字符串有多种方法,每种方法都有其独特的优点和适用场景。以下是几种常用的格式化字符串的方法:
1.使用百分号 (%
) 运算符
这是 Python 中最早的字符串格式化方式,类似于 C 语言中的 printf
。
name = "Alice"
age = 30
formatted_string = "My name is %s and I am %d years old." % (name, age)
print(formatted_string)
格式说明符:
%s
:字符串%d
:整数%f
:浮点数%.2f
:保留两位小数的浮点数
2.使用 str.format()
方法
这是 Python 2.7 和 3.0 引入的一个更强大的字符串格式化方法。
name = "Alice"
age = 30
formatted_string = "My name is {} and I am {} years old.".format(name, age)
print(formatted_string)
带位置参数和关键字参数:
formatted_string = "My name is {0} and I am {1} years old.".format(name, age)
print(formatted_string)formatted_string = "My name is {name} and I am {age} years old.".format(name="Alice", age=30)
print(formatted_string)
格式说明符:
{}
:默认位置{0}
:位置参数{name}
:关键字参数{:.2f}
:保留两位小数的浮点数
3.使用 f-strings (格式化字符串字面量)
这是 Python 3.6 引入的一种更简洁、更直观的方法。
name = "Alice"
age = 30
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string)
支持表达式:
formatted_string = f"Next year I will be {age + 1} years old."
print(formatted_string)
格式说明符:
{value:.2f}
:保留两位小数的浮点数
4.使用 string.Template
类
这是 Python 标准库中的一种替代方法,适用于需要更简单替换的情况。
from string import Templatename = "Alice"
age = 30
template = Template("My name is $name and I am $age years old.")
formatted_string = template.substitute(name=name, age=age)
print(formatted_string)
在需要提供缺省值时使用 safe_substitute
方法:
template = Template("My name is $name and I am $age years old.")
formatted_string = template.safe_substitute(name="Alice")
print(formatted_string)
# 输出: My name is Alice and I am $age years old.
总结
不同的格式化字符串方法有不同的适用场景:
- 百分号 (
%
) 运算符:适用于简单的格式化,通常用于老代码中。 str.format()
方法:更强大和灵活,适用于复杂的格式化需求。- f-strings:最简洁直观,适用于 Python 3.6 及以上版本,是推荐的格式化方法。
string.Template
类:适用于需要替换标记的简单模板,尤其是需要与非 Python 代码进行交互时。
选择哪种方法取决于你的具体需求和代码风格。对于大多数情况,推荐使用 f-strings 由于其易读性和性能。