目录

1. 简介

Python 是一种多功能的编程语言,以其简单性、可读性和用最少的代码行完成复杂任务的能力而闻名。

任何编程语言中最常见的操作之一就是使用字符串。 在 Python 中,字符串格式化对于创建用户友好的输出、生成报告、解析数据等至关重要。

本文将指导您完成各种 Python 字符串格式化技术,从基本的字符串连接开始,然后推进到更强大的技术,例如 %-格式化 和现代 f-字符串。 到本文结束时,您将具备有效处理 Python 中任何字符串格式化任务的知识。

2. 字符串连接

字符串连接是组合字符串的最简单方法,它使用“+”运算符。 这种技术适用于短字符串和不需要包含很多变量的情况。 但是,在处理较长的字符串或多个变量时,字符串连接会变得笨拙且难以阅读。

name = "小明"
age = 16

# 连接字符串
result = "我叫" + name + ",今年" + str(age) + "岁。"

print(result)  # 输出: 我叫小明,今年16岁。

在此示例中,我们使用 + 运算符连接字符串和变量。 请注意,您必须在连接之前使用str()函数将整数 age 转换为字符串。 字符串连接很简单,但功能有限。

3. %-格式化

受 C 语言的 printf 样式启发,%-格式化使用 % 字符作为占位符,后跟格式说明符,例如 %s 表示字符串或 %d 表示整数。 %-格式化比字符串连接更具可读性,尤其是在将多个变量合并到字符串中时。

name = "小明"
age = 16

# 使用 % 格式化
result = "我叫%s,今年%d岁。" % (name, age)
print(result)  # 输出: 我叫小明,今年16岁。

格式化说明符

格式说明符指示要插入到字符串中的数据类型。 它们以 % 字符开头,后跟可选的标志、宽度、精度和转换类型。 以下是常见格式说明符的列表:

格式化说明符 含义
%s 字符串(或任何具有字符串表示形式的对象,如数字)
%d, %i 有符号十进制格式
%u 无符号十进制格式(已过时,请改用 %d
%o 有符号八进格式
%x%X 有符号十六进格式(小写或大写)
%e%E 浮点指数格式(小写或大写)
%f%F 浮点十进制格式
%g, %G 浮点格式; 根据值和精度使用小写指数或小数格式
%c 字符(接受整数或单个字符串)
%% 文字 '%' 字符

下面是一个演示通用格式说明符使用的示例:

name = "小明"
age = 16
pi = 3.14159

result = "我叫%s,今年%d岁。π的值大约是%.2f。" % (name, age, pi)

print(result)

# 输出: 我叫小明,今年16岁。π的值大约是3.14。

在这个例子中:

  • %s 用于插入字符串变量 name
  • %d 用于插入整型变量 age
  • %.2f 用于插入带 2 位小数的浮点变量 pi

您可以在 官方 Python 文档 中找到有关格式说明符及其用法的更多信息。

4. f-字符串(格式化字符串文字)

f-字符串,也称为格式化字符串文字,是在 Python 3.6 中引入的,它提供了一种更现代、简洁和可读的格式化字符串的方式。 它们以 fF 字符为前缀,并使用大括号{}将要计算并包含在字符串中的表达式括起来。

name = "小明"
age = 16

# 使用 f 字符串
result = f"我叫{name},今年{age}岁。"
print(result)  # 输出: 我叫小明,今年16岁。

4.1 格式化选项

在大括号内,您可以使用各种格式化选项来控制插入到字符串中的值的外观。 f-字符串格式的一般语法是:

{expression : format_spec}

expression 是要格式化的值,format_spec 是格式化规范。 format_spec 是可选的,如果省略,则使用表达式类型的默认格式。

format_spec 可以包括:

  • 字段宽度:指定字段最小宽度的数字。 如果该值小于指定宽度,则默认用空格填充。
  • 对齐:指定值在可用空间内应如何对齐。 对齐选项是:
    • <:在可用空间内左对齐(大多数对象的默认设置) ->:在可用空间内右对齐(数字默认)
    • =:对于数字,在符号之后但数字之前用零填充 -^:在可用空间内居中对齐
  • 符号:对于数字类型,控制符号的显示方式。 选项是:
    • +:显示正数和负数的符号
    • -: 仅对负数显示符号(默认)
    • :为正数显示一个空格,为负数显示一个减号
  • 零填充:“0”(零)可以用作启用数字零填充的标志。 这与字段宽度一起使用,并且必须放在字段宽度之前。
  • 精度:对于浮点数,可以使用“.”后跟表示要显示的小数位数的整数来指定精度。 对于字符串,可以使用精度来限制输出的最大宽度。
  • 类型:这是一个单一的字符,表示值的数据类型以及它应该如何格式化。 一些常见的类型字符是: -s:字符串(字符串的默认值) -d:十进制整数(整数的默认值)
    • f, F: 浮点十进制格式
    • e, E: 浮点指数格式
    • gG:通用格式(根据值和精度使用指数或小数格式)
    • c:字符(对于整数,将整数转换为相应的 Unicode 字符)
    • %:百分比(将数字乘以 100 并将其显示为定点数后跟百分号)

下面是一些示例,展示了 f-字符串的各种格式化选项:

value = 12.345678

# 示例一:字段宽度、对齐
print(f"{value:10}")  # 宽度10、右对齐
# 输出: ' 12.345678'

# 示例二:字段宽度、对齐
print(f"{value:<10}")  # 宽度10、左对齐
# 输出: '12.345678 '

# 示例三:符号、零填充和精度
print(f"{value:+010.2f}")  # 显示符号、零填充、两位小数
# 输出: '+000012.35'

# 示例四:浮点数精度
print(f"{value:.2f}")  # 两位小数
# 输出: '12.35'

# 示例五:字符串精度示例
text = "Hello World!"
print(f"{text:.5}")  # 显示前5个字符
# 输出: 'Hello'

4.2 高级示例

下面是更复杂的一些示例,展示了 f-字符串的更多格式化选项:

# 组合字段宽度、对齐和精度
value = 12.345678
print(f"{value:10.2f}")  # 宽度:10、右对齐、精度:2位小数
# 输出: '     12.35'

# 字典格式化
person = {"name": "小明", "age": 16}
print(f"{person['name']}今年{person['age']}岁。")
# 输出: 小明今年16岁。

# 嵌套格式化
width = 10
precision = 2
print(f"{value:{width}.{precision}f}")  # 使用变量控制宽度和精度
# 输出: '     12.35'

# 格式化日期和时间
from datetime import datetime
now = datetime.now()
print(f"{now:%Y-%m-%d %H:%M:%S}")
# 输出: '2023-04-03 20:00:23'

这些示例演示了使用 f-字符串格式化选项来控制插入到格式化字符串中的值的外观和对齐方式的各种方法。

F-字符串是 Python 3.6 及更高版本中格式化字符串的一种强大而灵活的方法,与其他字符串格式化技术相比,它们通常可以使您的代码更具可读性和简洁性。

5. 选择正确的字符串格式化技术

由于 Python 中提供了多种字符串格式化技术,因此很难决定使用哪一种。 以下是一些指南,可帮助您选择正确的方法:

  • 如果您使用的是 Python 3.6 或更高版本,通常建议使用 f-字符串,因为它们具有可读性、简洁性和性能优势。
  • 在使用较旧的 Python 版本或需要与 C 风格的 printf 格式兼容时,%-格式非常有用。
  • 字符串连接适用于字符串较短且变量较少的简单情况,但对于更复杂的字符串或多个变量,它可能变得笨拙且难以阅读。

6. 结论

在本文中,我们探讨了 Python 中的各种字符串格式化技术,从基本的字符串连接到更高级的方法,例如 %-格式化 和 f-字符串。 了解这些技术将使您能够在 Python 中处理字符串时创建干净、高效且可读的代码。

无论您是生成用户友好的输出、解析数据还是创建报告,掌握 Python 字符串格式设置无疑都会提高您的工作效率和代码的整体质量。 通过使用适当的字符串格式化方法,您可以确保您的代码保持可维护性和易于理解,最终导致更好的软件开发实践。


相关博客文章

相关书籍教程文章
官方公众号

💯本站文章同步发表在官方公众号 ReadingHere,关注公众号您将在第一时间了解本站最新文章和资讯。

❤️欢迎您关注本站官方公众号 ReadingHere


版权声明

本文由ReadingHere原创,未经ReadingHere授权不得转载、摘编。已经授权使用的,应在授权范围内使用,并注明来源: www.readinghere.com。违反上述声明者,ReadingHere将追究其相关法律责任。


交流合作

如需交流咨询或商务合作请扫描下图微信二维码联系。