Python字符串格式化:f 您所在的位置:网站首页 python增加千位分隔符和填充 Python字符串格式化:f

Python字符串格式化:f

2023-04-26 13:00| 来源: 网络整理| 查看: 265

目   录

一、字符串格式化方法概览

    方法 1 %

    方法 2 format

    方法 3 f-strings

二、f-strings 常用格式化方法

    1、简单使用

    2、表达式求值

    3、调用函数

    4、lambda表达式

    5、多行代码f-string

    6、引号、大括号与反斜杠

    7、格式限定符

        1)填充与对齐

        2)数字符号

        3)数字显示格式

        3)宽度与精度

        4)千位分隔符

        5)格式类型

        6)时间格式

格式化字符串文字,也称为 f-strings,是一种非常实用的字符串插值方法。它使用大括号作为变量占位符,使操作和丰富字符串变得容易。使用字符串插值,使得 print 语句的功能强大了很多。

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中常见的格式化的方法主要有三种,本文讲解目前最常用的f-strings格式化方式,后期讲进行对比讲解。

 

一、字符串格式化方法概览

方法 1 %

过去的格式化方法,代码中还能经常见到,在 python 2.6 之前,利用 百分号 % 表示占位符,进行格式化

name='小伍哥''Hello,%s'%nameHello,小伍哥

方法 2 format

现阶段使用最多的方法,Python2.6 引入,它通过 {} 和 : 来代替%表示占位符,性能比 % 更强大,字符串的 format 方法

name='小伍哥''Hello,{}'.format(name)'Hello,小伍哥'

方法 3 f-strings

推荐使用的方法,为了进一步简化格式化方法,Eric Smith 在2015年提交了 PEP 498 -- Literal String Interpolation 提案。Python 3.6 引入了新的字符串格式化方式 f-strings,字符串开头加上一个字母 f ,与其它格式化方式相比,不仅简洁明了,可读性更好,更不容易出错,而且运行效率也更高

name='小伍哥'f'Hello,{name}''Hello,小伍哥'

 

二、f-strings 常用格式化方法

1、简单使用

f-string用大括号 {} 表示被替换字段,其中直接填入替换内容:

name = 'Eric'f'Hello, my name is {name}''Hello, my name is Eric' number = 8f'My lucky number is {number}''My lucky number is 8'#保留4位小数点 price = 19.99f'The price of this book is {price:.4f}''The price of this book is 19.9900'

 

2、表达式求值

f-string的大括号 {} 可以填入表达式,Python会求出其结果并填入返回的字符串内

f'A total number of {24 * 8 + 4}''A total number of 196' f'Complex number {(2 + 2j) / (2 - 3j)}''Complex number (-0.15384615384615388+0.7692307692307692j)'

 3、调用函数

f-string的大括号 {} 可以调用函数,并返回函数的结果。

#调用内置的函数,大小写转换name = 'ERIC'f'My name is {name.lower()}''My name is eric'#调用内置的函数,进行字符串填充num = '12'f'''My num is {num.rjust(10,'*')}''''My num is ********12'f'''My num is {num.rjust(10,'0')}''''My num is 0000000012' import mathf'The answer is {math.log(math.pi)}''The answer is 1.1447298858494002

 

4、lambda表达式

f-string大括号内也可填入lambda表达式,但lambda表达式的 : 会被f-string误认为是表达式与格式描述符之间的分隔符,为避免歧义,需要将lambda表达式置于括号 () 内:

f'result is {(lambda x: x ** 2 + 1) (2)}''result is 5'f'result is {(lambda x: x ** 2 + 1) (2):分别是居中、左对齐、右对齐,后面带宽度

: 号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

格式描述符

含义与作用

右对齐(数值默认对齐方式)

^

居中

num = 18#右对齐f'{num:>8}''      18'f'{num:0>8}''00000018'f'{num:*>8}''******18'#居中对齐f'{num:*^8}''***18*

 

2)数字符号

格式描述符

含义与作用

+

负数前加负号(-),正数前加正号(+)

-

负数前加负号(-),正数前不加任何符号(默认)

(空格)

负数前加负号(-),正数前加一个空格

num = 4.23f'{num:+}''+4.23'

 

3)数字显示格式

格式描述符

含义与作用

#

切换数字显示方式

注1:仅适用于数值类型。 

注2:# 对不同数值类型的作用效果不同,详见下表:

数值类型

不加#(默认)

加#

区别

二进制整数

'1111011'

'0b1111011'

开头是否显示 0b

八进制整数

'173'

'0o173'

开头是否显示 0o

# 居中,宽度10位,十六进制整数(大写字母),显示0X前缀a = 1234f'a is {a:^#10X}' 'a is 0X4D2 '

 

3)宽度与精度

格式描述符

含义与作用

width

整数 width 指定宽度

0width

整数 width 指定宽度,开头的 0 指定高位用 0 补足宽度

width.precision

整数 width 指定宽度,整数 precision 指定显示精度

注1:0width 不可用于复数类型和非数值类型,width.precision 不可用于整数类型。 

注2:width.precision 用于不同格式类型的浮点数、复数时的含义也不同:用于 f、F、e、E 和 % 时 precision 指定的是小数点后的位数,用于 g 和 G 时 precision 指定的是有效数字位数(小数点前位数+小数点后位数)。 

注3:width.precision 除浮点数、复数外还可用于字符串,此时 precision 含义是只使用字符串中前 precision 位字符。

a = 123.456f'a is {a:8.2f}''a is 123.46'f'a is {a:08.2f}''a is 00123.46'f'a is {a:8.2e}''a is 1.23e+02'f'a is {a:8.2%}''a is 12345.60%'f'a is {a:8.2g}''a is 1.2e+02' s = 'hello'f's is {s:8s}''s is hello 'f's is {s:8.3s}''s is hel

精度常跟类型f一起使用

'{:.2f}'.format(321.33345)'321.33''π is {:.2f}'.format(3.1415926)π is 3.14'π is %.2f'% 3.1415926π is 3.14'{0:.4f}+{1:.4f}'.format(321.33345,325.33345)'321.3335+325.3335

其中.2表示长度为2的精度,f表示float类型。

数字

格式

输出

描述

3.1415926

{:.2f}

3.14

保留小数点后两位

3.1415926

{:+.2f}

+3.14

带符号保留小数点后两位

-1

{:+.2f}

-1.00

带符号保留小数点后两位

2.71828

{:.0f}

3

不带小数

5

{:0>2d}

05

数字补零 (填充左边, 宽度为2)

5

{:x



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有