Python 格式化字符串的 4 种方式
一、引言
在 Python 编程中,格式化字符串是一项常见且重要的任务,它能够帮助我们将变量、表达式等内容插入到字符串中,使输出更加清晰和易读。Python 提供了多种格式化字符串的方式,每种方式都有其特点和适用场景。本文将详细介绍 Python 中格式化字符串的 4 种常见方式,并通过丰富的代码示例进行说明。
二、% 格式化
2.1 基本原理
%
格式化是 Python 中最古老的字符串格式化方式,它使用 %
操作符,根据 %
后面的格式化字符来指定变量的类型,并将变量插入到字符串中。
2.2 代码示例
python
# 定义变量
name = "Alice"
age = 25
# 使用 % 格式化字符串,%s 表示字符串类型,%d 表示整数类型
message = "My name is %s and I am %d years old." % (name, age)
print(message) # 输出格式化后的字符串
# 格式化浮点数,%.2f 表示保留两位小数
height = 1.65
height_message = "My height is %.2f meters." % height
print(height_message)
在上述代码中,%s
用于格式化字符串,%d
用于格式化整数,%.2f
用于格式化浮点数并保留两位小数。通过 %
操作符,将变量插入到对应的位置。
三、str.format() 方法
3.1 基本原理
str.format()
方法是 Python 2.6 引入的一种格式化字符串的方式,它使用花括号 {}
作为占位符,通过 format()
方法中的参数来填充占位符。
3.2 代码示例
python
# 定义变量
name = "Bob"
age = 30
# 使用 str.format() 方法格式化字符串
message = "My name is {} and I am {} years old.".format(name, age)
print(message)
# 通过索引指定占位符的填充顺序
message_index = "My name is {1} and I am {0} years old.".format(age, name)
print(message_index)
# 通过关键字参数指定占位符的填充
message_keyword = "My name is {name} and I am {age} years old.".format(name=name, age=age)
print(message_keyword)
# 格式化浮点数,指定保留小数位数
weight = 70.5
weight_message = "My weight is {:.1f} kilograms.".format(weight)
print(weight_message)
在上述代码中,{}
是默认的占位符,也可以通过索引或关键字参数来指定占位符的填充顺序和内容。同时,还可以使用 :.1f
等格式说明符来格式化浮点数。
四、f-string(格式化字符串字面值)
4.1 基本原理
f-string 是 Python 3.6 引入的一种新的格式化字符串方式,它在字符串前加上 f
或 F
前缀,在字符串中使用花括号 {}
直接嵌入变量或表达式。
4.2 代码示例
python
# 定义变量
name = "Charlie"
age = 35
# 使用 f-string 格式化字符串
message = f"My name is {name} and I am {age} years old."
print(message)
# 在 f-string 中使用表达式
birth_year = 2023 - age
message_expr = f"I was born in {birth_year}."
print(message_expr)
# 格式化浮点数
salary = 5000.75
salary_message = f"My monthly salary is {salary:.2f} yuan."
print(salary_message)
在上述代码中,通过在字符串前加上 f
前缀,在花括号中直接使用变量或表达式,Python 会自动将其替换为对应的值。同时,也可以使用格式说明符来格式化变量。
五、模板字符串
5.1 基本原理
模板字符串是 Python 的 string
模块中的 Template
类提供的一种格式化字符串方式,它使用 $
符号作为占位符,通过 substitute()
方法来替换占位符。
5.2 代码示例
python
from string import Template
# 定义变量
name = "David"
age = 40
# 创建模板字符串
template = Template("My name is $name and I am $age years old.")
# 使用 substitute() 方法替换占位符
message = template.substitute(name=name, age=age)
print(message)
在上述代码中,首先导入 Template
类,然后创建一个模板字符串,使用 $
符号定义占位符。最后,通过 substitute()
方法将变量替换到占位符中。
六、总结与展望
6.1 总结
Python 提供了多种格式化字符串的方式,每种方式都有其优缺点:
%
格式化是最古老的方式,语法简单,但不够灵活。str.format()
方法提供了更多的灵活性,支持索引、关键字参数等,但代码相对冗长。- f-string 是最简洁和直观的方式,支持直接嵌入变量和表达式,代码可读性高,但要求 Python 版本在 3.6 及以上。
- 模板字符串提供了一种安全的格式化方式,适用于需要从用户输入中获取数据进行格式化的场景。
6.2 展望
随着 Python 语言的不断发展,f-string 由于其简洁性和易用性,可能会成为未来格式化字符串的主流方式。同时,模板字符串在处理用户输入时的安全性优势也会在特定场景中得到更广泛的应用。开发者可以根据具体的需求和 Python 版本选择合适的格式化方式。