python3格式化字符串 f-string的高级用法(推荐)

作者:油腻胖大叔 时间:2023-04-13 00:56:55 

f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加简便。

f-string在形式上是以 f 或 F 修饰符引领的字符串(f'xxx' 或 F'xxx'),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式:

While other string literals always have a constant value, formatted strings are really expressions evaluated at run time.
(与具有恒定值的其它字符串常量不同,格式化字符串实际上是运行时运算求值的表达式。)
—— Python Documentation

f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。

从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快!

在Python 3.6之前,有两种将Python表达式嵌入到字符串文本中进行格式化的主要方法:%-formatting和str.format()。

%-formatting

字符串对象具有使用%运算符的内置操作,您可以使用它来格式化字符串。


name = "tom"
print("猫的名字叫%s"%name)

 输出:

cat name is tom

上面的示例代码看起来足够易读,但是,一旦开始使用多个参数和更长的字符串,代码就将变得不太容易阅读。


name = "tom"
age = 2
action = "迅速"
disposition = "懒"

print("猫的名字叫%s,今年%d岁了,抓老鼠非常%s,但是非常%s,白天总睡觉。"%(name, age, action, disposition))

输出:

猫的名字叫tom,今天2岁了,抓老鼠非常迅速,但是非常懒,白天总睡觉。

str.format()

str.format()是对%-formatting的改进。它使用正常的函数调用语法,并且可以通过对要转换为字符串的对象的__format __()方法进行扩展。

使用str.format(),替换字段用大括号标记:


name = "tom"
print("猫的名字叫{}".format(name))

输出:

猫的名字叫tom

也可以通过引用其索引,以任何顺序引用变量:


name = "tom"
age = 2

print("猫的名字叫{1},今年{0}岁了,今天星期{0}".format(age, name))

输出:

猫的名字叫tom,今年2岁了,今天星期2

 也可以使用 ** 来用字典,巧妙的完成格式化:


cat = {"name": "tom", "age": 2}

print("猫的名字叫{name},今年{age}岁了".format(**cat))

输出:

猫的名字叫tom,今年2岁了

使用 str.format() 格式化代码比使用 %-formatting 更易读,但当处理多个参数和更长的字符串时,str.format()看起来仍然非常冗长。

f-Strings:一种改进Python格式字符串的新方法

f-Strings语法与str.format()使用的语法类似,但较少细节啰嗦,只需要在格式化字符串前加f或F即可。看看这是多么容易可读:


name = "tom"
age = 2

print(f"猫的名字叫{name},今年{age}岁了")

输出:

猫的名字叫tom,今年2岁了

格式化时可以使用函数:


name = "tom"
age = 2

print(F"猫的名字叫{name.upper()},今年{age}岁了")

输出:

猫的名字叫TOM,今年2岁了

格式化时可以使用字典:


cat = {"name": "tom", "age": 2}

print(F"猫的名字叫{cat['name']},今年{cat['age']}岁了")

输出:

猫的名字叫tom,今年2岁了

 格式时可以对浮点数精度做限制:


name = "tom"
age = 2.1274

print(F"猫的名字叫{name},今年{age: .2f}岁了")

输出:

猫的名字叫tom,今年 2.13岁了

来源:https://www.cnblogs.com/testlearn/p/11704984.html

标签:python,f-string,格式化,字符串
0
投稿

猜你喜欢

  • Python3连接Mysql8.0遇到的问题及处理步骤

    2024-01-20 13:06:46
  • python中利用Future对象异步返回结果示例代码

    2021-09-10 06:59:52
  • Python基于codecs模块实现文件读写案例解析

    2023-08-31 16:25:21
  • python3中的类继承你真的了解吗

    2021-06-18 11:23:53
  • ROS机器人底盘坐标像素变换操作方法

    2023-11-08 20:15:43
  • MySQL查询冗余索引和未使用过的索引操作

    2024-01-22 22:04:23
  • python先序遍历二叉树问题

    2023-10-09 10:25:30
  • python实现录音功能(可随时停止录音)

    2023-07-29 05:15:06
  • Python执行ping操作的简单方法

    2022-09-22 12:09:22
  • python word转pdf代码实例

    2023-09-02 18:14:16
  • Mysql简易索引方案讲解

    2024-01-20 15:08:11
  • vue+canvas实现拼图小游戏

    2024-05-09 15:09:34
  • python在指定位置插入字符的实现

    2023-07-04 04:56:56
  • JS使用ajax从xml文件动态获取数据显示的方法

    2024-04-19 10:06:36
  • Python小游戏之300行代码实现俄罗斯方块

    2023-10-09 17:35:33
  • JavaScript字符串对象(string)基本用法示例

    2024-04-17 10:00:31
  • P3P 和 跨域 (cross-domain) cookie 访问(读取和设置)

    2011-04-02 10:42:00
  • python中matplotlib实现随鼠标滑动自动标注代码

    2023-09-02 10:49:47
  • 用python绘制樱花树

    2023-07-24 19:47:09
  • tensorflow 中对数组元素的操作方法

    2022-01-22 11:35:37
  • asp之家 网络编程 m.aspxhome.com