购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4-2 使用print( )格式化输出数据

相信读者经过前三章的学习,已经对使用print( )函数输出数据非常熟悉了,是时候完整解说这个输出函数的用法了。这一节将针对格式化字符串做说明。基本上可以将字符串格式化分为下列3种:

(1)使用 % :适用Python 2.x ~ 3.x,将在 4-2-2 节、 4-2-3 节解说。

(2)使用 {} format( ) :适用Python 2.6 ~ 3.x,将在 4-2-4 节解说。

(3)使用 f-strings :适用Python 3.6(含)以上,将在 4-2-5 节解说。

这些字符串格式化虽可以单独输出,不过更重要的是配合print( )函数输出,这也是本节的重点。最后为了读者熟悉上述输出,本书所有程序会交替使用,方便读者全方面应对未来职场的需求。

4-2-1 函数print( )的基本语法

它的基本语法格式如下:

     print(value, … , sep=” ”, end=”\n”, file=sys.stdout, flush=False)

value: 表示想要输出的数据,可以一次输出多个数据,各数据间以逗号隔开。

sep: 当输出多个数据时,可以插入各个数据的分隔字符,默认是一个空格字符。

end: 当数据输出结束时所插入的字符,默认是插入换行字符,所以下一次print( )函数的输出会在下一行输出。

file: 数据输出位置,默认是sys.stdout,也就是屏幕。也可以使用此设定,将输出导入其他文件或设备。

flush: 是否清除数据流的缓冲区,预设是不清除。

程序实例ch4_1.py: 重新设计ch3_18.py,其中在第二个print( ),2个输出数据的分隔字符是“$$$ ”。

执行结果

程序实例ch4_2.py: 重新设计ch4_1.py,将2个数据在同一行输出,彼此之间使用Tab键隔开。

执行结果

4-2-2 使用%格式化字符串同时用print( )输出

在使用%字符格式化输出时,基本使用格式如下:

     print("  …输出格式区…  "  %  ( 变量系列区,  …  ))

在上述 输出格式区 中,可以放置 变量系列区 对应的格式化字符,基本意义如下:

· %d :格式化整数输出。

· %f :格式化浮点数输出。

· %x :格式化十六进制整数输出。

· %X :格式化大写十六进制整数输出。

· %o :格式化八进制整数输出。

· %s :格式化字符串输出。

· %e :格式化科学记数法e的输出。

· %E :格式化科学记数法大写E的输出。

下列是基本输出的应用:

下列是程序解说。

程序实例ch4_3.py: 格式化输出的应用。

执行结果

设计程序时,print( )函数内的 输出格式区 也可以用一个字符串变量取代。

程序实例ch4_4.py: 重新设计ch4_3.py,在print( )内用字符串变量取代字符表列,读者可以参考第5和第6行与原先ch4_3.py的第5行作比较。

执行结果

与ch4_3.py相同。

程序实例ch4_5.py: 格式化十六进制和八进制输出的应用。

执行结果

程序实例ch4_6.py: 将整数与浮点数分别以%d、%f、%s格式化,同时观察执行结果。特别要注意的是,浮点数以整数%d格式化后,小数数据将被舍去。

执行结果

下列是使用%x和%X格式化数据输出的实例。

下列是使用%e和%E格式化科学记数法数据输出的实例。

4-2-3 精准控制格式化的输出

在上述程序实例ch4_6.py中,我们发现最大的缺点是无法精确控制浮点数的输出位置,print( )函数在格式化过程中,有提供功能可以让我们设定保留多少格的空间让数据做输出,语法如下:

· %(+|-)nd :格式化整数输出。

· %(+|-)m.nf :格式化浮点数输出。

· %(+|-)nx :格式化十六进制整数输出。

· %(+|-)no :格式化八进制整数输出。

· %(-)ns :格式化字符串输出。

· %(-)m.ns :m是输出字符串宽度,n是显示字符串长度,n小于字符串长度时会有裁减字符串的效果。

· %(+|-)e :格式化科学记数法e输出。

· %(+|-)e :格式化科学记数法大写E输出。

上述对浮点数而言,m代表保留多少格数供输出(包含小数点),n则是小数数据保留格数。至于其他的数据格式n则是保留多少格数空间,如果保留格数空间不足将完整输出数据,如果保留格数空间太多则数据靠右对齐。

如果格式化数值数据或字符串数据加上负号(-),表示保留格数空间有多时,数据将靠左输出。如果格式化数值数据或字符串数据加上正号(+),表示输出数据是正值时,将在左边加上正值符号。

程序实例ch4_7.py: 格式化输出的应用。

执行结果

程序实例ch4_8.py: 格式化输出,靠左对齐的实例。

执行结果

程序实例ch4_9.py: 格式化输出,正值数据将出现正号(+)。

执行结果

程序实例ch4_10.py: 格式化输出的应用。

执行结果

下列是格式化科学记数法e和E输出的应用。

对于格式化字符串,有一个特点是使用“ %m.n ”方式格式化字符串,这时 m 保留显示字符串空间, n 显示字符串长度,如果n的长度小于实际字符串长度,会有裁减字符串的效果。

4-2-4 {}和format( )函数

这是Python增强版的格式化输出功能,字符串使用format方法做格式化的动作,它的基本使用格式如下:

     print("  …输出格式区…  " .format( 变量系列区,  …  ))

在输出格式区内的变量使用“{ }”表示。

程序实例ch4_11.py: 使用{}和format( )函数重新设计ch4_3.py。

执行结果

与ch4_3.py相同。

程序实例ch4_12.py: 以字符串代表输出格式区,重新设计ch4_11.py。

执行结果

与ch4_3.py相同。

在使用 { } 代表变量时,也可以在 { } 内增加编号 n ,此时n是format( )内变量的顺序,变量多时方便了解变量的顺序。

程序实例ch4_13.py: 重新设计ch4_12.py,在 { } 内增加编号。

执行结果

我们也可以在format( )内使用具名的参数。

程序实例ch4_14.py: 使用 具名的参数 ,重新设计ch4_13.py。

执行结果

使用 具名参数 时, 具名参数 部分必须放在format( )参数的左边,以上述为例,如果将n和c位置对调将会产生错误。

我们也可以将4-2-2节所述格式化输出数据的概念应用在format( ),例如:d是格式化整数、f是格式化浮点数、s是格式化字符串等。传统的格式化输出是使用%配合d、s、f,使用format则是使用“:”,可参考下列实例第5行。

程序实例ch4_15.py: 计算圆面积,同时格式化输出。

执行结果

在使用格式化输出时,预设是靠右输出,也可以使用下列参数设定输出对齐方式。

> 靠右 对齐 < 靠左 对齐 ^ 置中 对齐

程序实例ch4_16.py: 输出对齐方式的应用。

执行结果

在使用format输出时,也可以使用填充字符,字符放在 后面,在 < ^ > 或指定宽度之前。

程序实例ch4_17.py: 填充字符的应用。

执行结果

{ } format( )的优点

format( ) 搭配 { } 的优点是,使用Python处理网络爬虫会碰上的网址时,设计更简洁、易懂和不易出错。

程序实例ch4_18.py: 以传统和format( )方式处理网络爬虫会碰上的网址。

执行结果

4-2-5 f-strings格式化字符串

在Python 3.6x版后有一个改良format格式化方式,称f-strings,这个方法以f为前缀,在大括号{ }内放置变量名称和表达式,这时没有空的{ }或是{n},n是指定位置,下面以实例解说。

本书未来主要将使用此最新型的格式化字符串做输出。

程序实例ch4_19.py: f-strings格式化字符串应用。

执行结果

在Python 3.8以后, f-strings 增加了一个快捷方式可以打印变量名称和它的值。方法是在{ }内增加“ = ”符号,可以参考下列应用。

上述用法的优点是方便执行程序除错,可以由此掌握变量数据。此外,也可以在等号右边增加“:”符号与对齐方式的参数。

4-2-6 字符串输出与基本排版的应用

其实适度利用输出格式,也可以产生一封排版的信件,以下程序的前3行会先利用sp字符串变量建立一个含40格的空白格数,然后产生对齐效果。

程序实例ch4_20.py: 排版信件的应用。

执行结果

4-2-7 让字符串重复

程序实例ch4_20.py第2行,利用空格乘以40产生40个空格,功能是用于排版。如果将某个字符串乘以500,然后用print( )输出,可以让字符串重复。

实例: 让字符串重复。

活用Python,可以产生许多意外的结果。 cVPizdb4HGyqa4v+ae/eLKvjUNcsc3oTXJbNds2/lw/quKCHQ2stnkgWvspL4JqA

点击中间区域
呼出菜单
上一章
目录
下一章
×