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 引入的一种新的格式化字符串方式,它在字符串前加上 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 版本选择合适的格式化方式。

相关推荐
机器人零零壹1 小时前
技术白皮书:iRobotCAM如何解决机器人激光切割应用中的核心难点,从CAD离线编程到双目视觉定位与轨迹自适应提升复杂空间曲线切割的精度、效率与柔性化水平
人工智能·算法
电子元件小说家2 小时前
2026年四季度电感市场观察:AI算力与汽车电子驱动下的选型与验证建议智能硬件
人工智能·汽车
网易CodeWave-小码哥2 小时前
支持多模块 Java 微服务导入|CodeWave SDD V4.5.10 上线
人工智能
AI你一生一世2 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
belldeep2 小时前
python:genesis-world, Genesis-Embodied-AI
人工智能·python·ai·genesis
怕浪猫2 小时前
小程序成长计划上新:10 亿 Token 现在能调 DeepSeek-v4.1-flash了
人工智能·aigc·ai编程
ss2733 小时前
为什么PostgreSQL适合AI场景?
数据库·人工智能·postgresql
benchmark_cc3 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
七牛云行业应用4 小时前
DeepSeek Super-agent 与 Grok Bot:开源 Agent 架构和聊天助手有何区别
人工智能·ai·架构·ai编程
维克兜率天4 小时前
【维克】趋势型CTA:期货市场的“追涨杀跌“
人工智能·python