Python 格式化字符串的 4 种方式(十三)

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 引入的一种新的格式化字符串方式,它在字符串前加上 fF 前缀,在字符串中使用花括号 {} 直接嵌入变量或表达式。

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 版本选择合适的格式化方式。

相关推荐
KIO no way2 分钟前
AI最佳发布时间怎么找_CSDN_AI数字营销的数据功能实测
人工智能
花月C3 分钟前
AI驱动的竞品分析多Agent协作系统设计理论
人工智能·python·ai·agent·ai编程
风华圆舞8 分钟前
鸿蒙 + Flutter 下如何让 HarmonyOS 能力真正服务于 AI 体验
人工智能·flutter·harmonyos
abcy07121312 分钟前
python InsecureClient 上传下载查看删除实例
python·hdfs
老马啸西风13 分钟前
monolith 打造属于你的知识花园
人工智能
YHHLAI15 分钟前
前端工程化调用 AI 多模态生图模型:Qwen Image Demo 实战
前端·人工智能
MATLAB代码顾问17 分钟前
Python NumPy数值计算核心指南
开发语言·python·numpy
searchforAI19 分钟前
B站视频怎么转文字稿?AI自动总结要点+生成思维导图教程
人工智能·笔记·学习·ai·语音识别·知识管理·视频总结
“码”力全开21 分钟前
【架构深探】基于Docker与GB28181/RTSP的边缘计算AI视频管理平台:异构算力调度与源码交付实践
人工智能·docker·架构
伶俜6621 分钟前
鸿蒙实战(二) ArkUI AI 相机:从零实现实时滤镜与人脸贴纸
人工智能·数码相机