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

相关推荐
汗流浃背了吧,老弟!13 分钟前
BPE 词表构建与编解码(英雄联盟-托儿索语料)
人工智能·深度学习
xiaoxue..17 分钟前
合并两个升序链表 与 合并k个升序链表
java·javascript·数据结构·链表·面试
软件聚导航22 分钟前
从 AI 画马到马年红包封面,我还做了一个小程序
人工智能·chatgpt
啊森要自信37 分钟前
CANN ops-cv:AI 硬件端视觉算法推理训练的算子性能调优与实战应用详解
人工智能·算法·cann
要加油哦~40 分钟前
AI | 实践教程 - ScreenCoder | 多agents前端代码生成
前端·javascript·人工智能
玄同76541 分钟前
从 0 到 1:用 Python 开发 MCP 工具,让 AI 智能体拥有 “超能力”
开发语言·人工智能·python·agent·ai编程·mcp·trae
新缸中之脑43 分钟前
用RedisVL构建长期记忆
人工智能
J_Xiong01171 小时前
【Agents篇】07:Agent 的行动模块——工具使用与具身执行
人工智能·ai agent
SEO_juper1 小时前
13个不容错过的SEO技巧,让您的网站可见度飙升
人工智能·seo·数字营销
小瑞瑞acd1 小时前
【小瑞瑞精讲】卷积神经网络(CNN):从入门到精通,计算机如何“看”懂世界?
人工智能·python·深度学习·神经网络·机器学习