格式化字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

格式化字符串是指先制定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称为占位符),而这些符号还不会显示出来。在Python中,格式化字符串有以下两种方法:

(1)使用“%”操作符

在Python中,要实现格式化字符串,可以使用“%”操作符,语法格式如下:

'%[-][+][0][m][.n]格式化字符'%exp

参数说明:

l  -:可选参数,用于指定左对齐,正数前方无符号,负数前面加负号。

l  +:可选参数,用于指定右对齐,正数前方加正号,负数前方加负号。

l  0:可选参数,表示右对齐,正数前方无符号,负数前方加负号,用0填充空白处(一般与m参数一起使用)。

l  m:可选参数,表示占有宽度。

l  .n:可选参数,表示小数点后保留的位数。

l  格式化字符:用于指定类型,其值如表1所示。

表1  常用的格式化字符

格式化字符

说    明

格式化字符

说    明

%s

字符串(采用str()显示)

%r

字符串(采用repr()显示)

%c

单个字符

%o

八进制整数

%d或者%i

十进制整数

%e

指数(基底写为e)

%x

十六进制整数

%E

指数(基底写为E)

%f或者%F

浮点数

%%

字符%

l  exp:要转换的项。如果要指定的项有多个,需要通过元组的形式进行指定,但不能使用列表。

例如,格式化输出一个保存公司信息的字符串,代码如下:

template = '编号:%09d\t公司名称: %s \t官网: http://www.%s.com'     # 定义模板

context1 = (7,'百度','baidu')                                       # 定义要转换的内容1

context2 = (8,'明日学院','mingrisoft')                             # 定义要转换的内容2

print(template%context1)                                          # 格式化输出

print(template%context2)                                         # 格式化输出

上面的代码运行后将显示如图17所示的效果,即按照指定模板格式输出两条公司信息。

图17  格式化输出公司信息

说明:由于使用%操作符是早期Python中提供的方法,自从Python 2.6版本开始,字符串对象提供了format()方法对字符串进行格式化。现在一些Python社区也推荐使用这种方法。所以建议大家重点学习format()方法的使用。

(2)使用字符串对象的format()方法

字符串对象提供了format()方法用于进行字符串格式化,语法格式如下:

str.format(args)

参数说明:

l  str:用于指定字符串的显示样式(即模板)。

l  args:用于指定要转换的项,如果有多项,则用逗号进行分隔。

下面重点介绍创建模板。在创建模板时,需要使用“{}”和“:”指定占位符,语法格式如下:

{[index][:[[fill]align][sign][#][width][.precision][type]]}

参数说明:

l  index:可选参数,用于指定要设置格式的对象在参数列表中的索引位置,索引值从0开始。如果省略,则根据值的先后顺序自动分配。

l  fill:可选参数,用于指定空白处填充的字符。

l  align:可选参数,用于指定对齐方式(值为“<”时表示内容左对齐;值为“>”时表示内容右对齐;值为“=”时表示内容右对齐,只对数字类型有效,即将数字放在填充字符的最右侧,值为“^”时表示内容居中),需要配合width一起使用。

l  sign:可选参数,用于指定有无符号数(值为“+”表示正数加正号,负数加负号;值为“-”表示正数不变;负数加负号,值为空格表示正数加空格,负数加负号)。

l  #:可选参数,对于二进制数、八进制数和十六进制数,如果加上#,表示会显示0b/0o/0x前缀,否则不显示前缀。

l  width:可选参数,用于指定所占宽度。

l  .precision:可选参数,用于指定保留的小数位数。

l  type:可选参数,用于指定类型。

format()方法中常用的格式化字符如表2所示。

表2  format()方法中常用的格式化字符

格式化字符

说    明

格式化字符

说    明

s

对字符串类型格式化

b

将十进制整数自动转换成二进制表示再格式化

d

十进制整数

o

将十进制整数自动转换成八进制表示再格式化

c

将十进制整数自动转换成对应的Unicode字符

x或者X

将十进制整数自动转换成十六进制表示再格式化

e或者E

转换为科学计数法表示再格式化

f或者F

转换为浮点数(默认小数点后保留6位)再格式化

g或者G

自动在e和f或者E和F中切换

%

显示百分比(默认显示小数点后6位)

说明:当一个模板中,出现多个占位符时,指定索引位置的规范需统一,即全部采用手动指定,或者全部采用自动。例如,定义“'我是数值:{:d},我是字符串:{1:s}'”模板是错误的。会抛出如图18所示的异常。

图18  字段规范不统一抛出的异常

例如,定义一个保存公司信息的字符串模板,然后应用该模板输出不同公司的信息,代码如下:

template = '编号:{:0>9s}\t公司名称: {:s} \t官网: http://www.{:s}.com'     # 定义模板

context1 = template.format('7','百度','baidu')                             # 转换内容1

context2 = template.format('8','明日学院','mingrisoft')                   # 转换内容2

print(context1)     # 输出格式化后的字符串

print(context2)     # 输出格式化后的字符串

上面的代码运行后将显示如图19所示的效果,即按照指定模板格式输出两条公司信息。

图19  格式化输出公司信息

在实际开发中,数值类型有多种显示方式,比如货币形式、百分比形式等,使用format()方法可以将数值格式化为不同的形式。下面通过一个具体的实例进行说明。

图标 (35)

  实例06  格式化不同的数值类型数据

在IDLE中创建一个名称为formatnum.py的文件,然后在该文件中将不同类型的数据进行格式化并输出,代码如下:

import math                          # 导入Python的数学模块

# 以货币形式显示

print('1251+3950的结果是(以货币形式显示):¥{:,.2f}元'.format(1251+3950))

print('{0:.1f}用科学计数法表示:{0:E}'.format(120000.1))    # 用科学计数法表示

print('π取5位小数:{:.5f}'.format(math.pi))               # 输出小数点后五位

print('{0:d}的16进制结果是:{0:#x}'.format(100))            # 输出十六进制数

# 输出百分比,并且不带小数

print('天才是由 {:.0%} 的灵感,加上 {:.0%} 的汗水 。'.format(0.01,0.99)) 

运行实例,将显示如图20所示的结果。

图20  格式化不同的数值类型数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子味冰可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值