一种十分方便的python字符串格式化方法:f-string
简介
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进行字符串格式化
用法
f-string可以起到类似槽函数的效果,用大括号 {} 表示被替换字段,其中直接填入替换内容,例如
1 | 1 a = |
可以看到在字符串前加了f以后,再使用大括号,大括号里的内容就会自动替换,起到类似槽函数的效果,而前面不加f的话,就没有这个效果
1 | 1 a = |
不加f的话,就得使用槽函数,如下
1 | 1 a = |
可以看到f-string使用起来更加简洁
f-string的大括号{}也可以填入表达式或调用函数,Python会求出其结果并返回填入的字符串内
1 | import math |
f-string大括号内所用的引号不能和大括号外的引号定界符冲突,可根据情况灵活切换 ' 和 " :
1 | f'I am {"Eric"}' |
f-string大括号内不能使用 \ 转义,事实上不仅如此,f-string大括号内根本就不允许出现 \ ,如果确实需要 \ ,则应首先将包含 \ 的内容用一个变量表示,再在f-string大括号内填入变量名:
1 | f"newline: {ord('\n')}" |
f-string大括号外如果需要显示大括号,则应输入连续两个大括号 :
1 | f'5 {"{stars}"}' |