在 Python 中,格式化字符串有多种方法,每种方法都有其独特的优点和适用场景。以下是几种常用的格式化字符串的方法:
%
) 运算符这是 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
:保留两位小数的浮点数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}
:保留两位小数的浮点数这是 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}
:保留两位小数的浮点数string.Template
类这是 Python 标准库中的一种替代方法,适用于需要更简单替换的情况。
- from string import Template
-
- name = "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()
方法:更强大和灵活,适用于复杂的格式化需求。string.Template
类:适用于需要替换标记的简单模板,尤其是需要与非 Python 代码进行交互时。选择哪种方法取决于你的具体需求和代码风格。对于大多数情况,推荐使用 f-strings 由于其易读性和性能。