python17-Python的字符串格式化

本文详细介绍了Python中使用%运算符进行格式化输出的方法,包括%s占位符的工作原理,以及其他的转换说明符如整数、浮点数和字符串的处理,以及如何控制宽度、对齐方式和精度。

Python提供了“%”对各种类型的数据进行格式化输出,例如如下代码。


# !/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2024/01

# @Author : Laopi

weight = 180

print('老师傅的体重是 %s' % weight)

上面程序就是格式化输出的关键代码,这行代码中的 print 函数包含三个部分,第一部分是格式化字符串(它相当于字符串模板),该格式化字符串中包含一个“%s”占位符,它

会被第三部分的变量或表达式的值代替:第二部分固定使用“%”作为分隔符。格式化字符串中的“%s”被称为转换说明符(Conversion Specifier),其作用相当于一个占位它会被后面的变量或表达式的值代替。“%s”指定将变量或值使用str()函数转换为字符串。

如果格式化字符串中包含多个“%s”占位符,第三部分也应该对应地提供多个变量,并且使用圆括号将这些变量括起来。例如如下代码。

# !/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2024/01

# @Author : Laopi

weight = 180

print('老师傅的体重是 %s' % weight)



name = '软件测试划水老师傅'

age = 18

#格式化字符串中有两个占位符,第三部分也应该提供两个变量

print("他的名字是%s 年龄是 %s岁" % (name,age))

在格式化字符串中难道只能使用“%s”吗?还有其他转换说明符吗?如果只有“%s”这一种形式,Python的格式化功能未免也太单一了。

实际上,Python提供了如下表所示的转换说明符

当使用上面的转换说明符时可指定转换后的最小宽度。例如如下代码(程序清单同上)。

num=-32

print("num is:%6i" %num)

print("num is:%6d" %num)

print("num is:%6o" %num)

print("num is:%6x" %num)

print("num is:%6X" %num)

print("num is:%6s" %num)

运行结果如下:

num is: -32

num is: -32

num is: -40

num is: -20

num is: -20

num is: -32

从上面的输出结果可以看出,此时指定了字符串的最小宽度为6,因此程序转换数值时总宽度为6,程序自动在数值前面补充了三个空格。在默认情况下,转换出来的字符串总是右对齐的,不够宽度时左边补充空格。Python 也允许在最小宽度之前添加一个标志来改变这种行为,Python 支持如下标志。

1) -:指定左对齐

2)+:表示数值总要带着符号(正数带“+”,,负数带“-”)。

3) 0:表示不补充空格,而是补充0

num1 = 3

print("num1 is:%06d" %num1)

print("num1 is:%+6d" %num1)

print("num1 is:%-6d" %num1)

运行结果如下:

num1 is:000003

num1 is: +3

num1 is:3

对于转换浮点数,Python 还允许指定小数点后的数字位数;

如果转换的是字符串,Python 允许指定转换后的字符串的最大字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用点(.)隔开。例如如下代码

value=3.1234567897889412

#最小宽度为8,小数点后保留3位

print("value is:%8.3f" % value)

# 最小宽度为8,小数点后保留3位,左边补0

print("value is:%08.3f" % value)

#最小宽度为8,小数点后保留3位,左边补0,始终带符号

print("value is:%08.3f" % value)

name = "测试划水老师傅"

#只保留3个字符

print("name is:%.3s" % name)

#输出测试划

#只保留2个字符,最小宽度为10

print("name is: %10.2s"% name)

运行结果如下:

value is: 3.123

value is:0003.123

value is:0003.123

name is:测试划

name is: 测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

软件测试老痞

你的支持,是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值