IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python系列(六):如何优雅的格式化字符串 -> 正文阅读

[Python知识库]Python系列(六):如何优雅的格式化字符串

一.前言

本文按照Python格式化字符串的历史来按顺序介绍三种字符串格式化方法。

二.字符串格式化的方法

2.1 使用%格式化运算符

使用%来进行字符串格式化时,预定义的文本模板在%运算符的左侧,要插入文本模板的值在%的右侧,以单个值或多个值组成元组的形式提供,例如:

m_str = "python"
print("hello %s" % m_str)
# hello python
a,b = 2,3
print("%d + %d = %d" % (a,b,a + b))
# 2 + 3 = 5

在上述的例子中,我们可以看到这种字符串格式化方法需要在文本模板中指定占位符(格式说明符),例如%s。Python继承了C语言中的printf函数的所有常用选项,例如%s %x %f,以及对小数位数、填充和对齐的控制。

但是Python中的C风格的格式化字符串也存在着一些问题。

问题1:左侧的占位符在右侧对应的值的类型必须要与占位符指定的类型一致,若不一致则会报错。为此,每次都必须进行手动检查类型一致性。

pi_str = 'pi'
pi_value = 3.14
print("%s = %.2f" % (pi_str, pi_value))
# pi = 3.14
print("%s = %.2f" % (pi_value, pi_str))
# TypeError: must be real number, not str

问题2:倘若需要使用多个相同的值,必须在%运算符右侧多次传入同一个值,虽然可以在格式化表达式用使用字典来解决,但是这样会增加行代码的长度,可能破坏Python代码的美感。

print("%f is %f" % (pi_value, pi_value))
# 3.141593 is 3.141593
print("%(piv)f is %(piv)f" % {'piv':pi_value})
# 3.141593 is 3.141593

2.2 使用str.format

Python3提供了一个更具有表达能力的字符串格式化函数format,其使用示例如下:

pi_str = 'pi'
pi_value = 3.1415926
print("{} = {}".format(pi_str, pi_value))
# pi = 3.1415926

上述示例中{}表示一个占位符,在占位符中可以使用冒号:+格式说明符来指定对相应值的格式设置。

print("{:<10} = {:.2f}".format(pi_str, pi_value))
# pi         = 3.14

另外,在format中还可以指定右侧参数的位置索引

print("{1} = {0}".format(pi_value, pi_str))
# pi = 3.1415926

位置索引可以重复多次,这样可以避免在format()参数列表中多次传入同一个值。

print("{0} is {0}".format(pi_value))
# 3.1415926 is 3.1415926

2.3 使用F-strings

Python3.6开始引入了F-strings,其语法格式是在格式化字符串前面加一个字符f

print(f"{pi_str} = {pi_value}")
# pi = 3.1415926

F-string允许在格式化字符串中直接引用其作用域内的所有名称来作为格式化表达式的一部分。倘若需要指定某个值的格式,同样采用:+格式说明符的方式,即:

print(f"{pi_str} = {pi_value:.2f}")
# pi = 3.14

F-strings还允许在占位符括号中直接使用完整的Python表达式

m_str = "hello world"
print(f"The length of '{m_str}' is {len(m_str)}")
# The length of 'hello world' is 11

在F-strings中,Python表达式也可能出现在格式说明符选项中,例如:

num = 2
pi_str = 'pi'
pi_value = 3.1415926
print(f"{pi_str} = {pi_value:.{num}f}")
# pi = 3.14

三.总结

从对上面三种字符串格式化方法的介绍来看,最间接,最优雅的当属F-strings了,这种方式也是官方推荐的。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:03:10  更:2022-05-08 08:03:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:54:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码