首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python渐进-字符串的格式化

7.5 string的格式化

string支持对数据的格式化,使得字符串能够按照某种格式显示出来。格式化字符串在服务器后台开发中可能还常用一些,在命令行的模式下,只能通过string的格式化使得输出的内容显得更规整一些。

在python中,string的format方法和系统的%操作都可以让string格式化,这里只介绍string的format方法。因为据说%操作会被干掉的。

string类型使用{}来表示占位符。format方法的参数会遵循某些规则来替换{}以及它里面的内容。

下面的例子当中,字符串中的两个{}表示了两个占位符;而format的参数1和2就是两个要替换的字符串(其实是数字,不过会自动转成字符串的。)

>>> '{} and{}'.format(1,2)

'1 and 2'

可以看到上面的代码中,参数1和2分别替换了两个{}占位符。

如果字符串里面本来有'{','}'这两个字符,则需要使用'{{'来表示'{',同样的,用'}}'来表示'}'。

format()的参数的数目是可变的,爱给它输入几个参数就输入几个参数。format的参数都有序号,第一个参数的序号是,第二个参数的序号是1,一次类推。

{}占位符中可以指定替换的参数序号,如果不指定的话,系统会默认按出现顺序从0号参数开始替换。上面的代码中{}占位符就没有指定使用哪个序号的参数来替换,所以系统默认0号参数替换了第一个占位符,1号参数替换了第二个占位符。

下面的例子当中,第一个{}占位符指定要1号参数来替换,第二个{}占位符指定要0号参数来替换。

>>> ' and'.format(1,2)

'2 and 1'

可以看到上述代码有了不一样的效果。

format()方法接受key参数。此时{}占位符可以通过key来指定参数。这个本来应该是函数一章的内容了,这里先演示一下。

以下的代码中format有两个参数,一个是key为a1的参数,另一个是key为a2的参数。而{}占位符中可以指定不同key值的参数来替换它。

>>> ' and'.format(a1=1,a2=2)

'1 and 2'

如果format()的参数是list和dict类型的,{}占位符也可以通过序号、key等来获取。下面演示了format的参数是一个list,而第一项{}占位符取list的第一项、第二项{}占位符取list的第二项。

>>> nl=[1,2,3]

>>> ' and and '.format(nl)

'1 and 2 and 3'

format接受的参数类型可能是五花八门的,可能是一个列表,甚至可能是一个函数。此时可能需要调用stri()或者repr()来把它转化为一个字符串。此时可以在 {}占位符中加入!s或者!r来进行转换。下面的代码就展示了使用!s操作来进行str(nl)。

>>>''.format(nl)

'[1, 2, 3]'

上面的内容都是在讲{}占位符如何指定参数以及对参数进行类型转换的。下面的内容主要是{}占位符中怎么定义数字的格式。

数字格式的定义以 ':' 号开始。碰到了': '字符就知道要定义一个数字的显示格式了。格式的定义顺序为

[对齐方式(>右对齐、

[+/-符号]

[#进制声明(具体是哪个进制在类型定义)]

[0填充]

[整数宽度]

[ ,千位分隔符]

[ .小数宽度]

[类型(b二进制、d十进制、x十六进制、f浮点数、%百分数、e科学计数法等等)]

这八种定义可以单个出现,也可以三三两两出现,也可以全部都出现。一般按照情况选取几种格式就可以了。不要搞得太复杂了,以免看着眼花。

下面的例子是数字右对齐,整数宽度是10.

>>>''.format(9)

' 9'

下面的例子是居中对齐,整数宽度是10,进制是16进制。

>>>''.format(30)

' 0x1e '

下面的例子是小数宽度为2,并且使用百分数的形式.

>>> ''.format(3.1415926)

'314.16%'

下面的例子是进行0填充,整数宽度为6,十进制表示.

>>>''.format(25)

'000025'

下面的例子是对数据添加千位分隔符。

>>>''.format(123456789)

'123,456,789'

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180612G207ND00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券