Python 字符串格式化(%和format)

本文介绍了Python中的字符串格式化方法,包括%格式化操作符和format()函数,对比了两者的特点,并提供了两个示例展示如何在实际编程中使用。
摘要由CSDN通过智能技术生成


格式化是指把数据填充到预先定义的文本模板中,并返回一个新的字符串。这里介绍 Python 对字符串做格式化处理的两种常见方式:

  • % 格式化操作符:从 Python 诞生起就开始使用的格式化操作符 %
  • 字符串的 format() 方法:Python 2.6 和 Python 3.0 引入的 format 函数 / 方法

总体而言,% 百分号方式比较老,而 format 方式是比较先进的,企图替代古老的方式,目前两者共存,可以根据自己的实际需要来选择。

一、% 格式化操作符

% 格式化操作符的写法来自 C 语言的 printf 函数,Python 及其他一些编程语言都依照了相同的写法来定义自己的格式字符串。

提示:% 操作符左边的文本模板被称为“格式字符串”。

% 的基本格式如下:

%[(name)][flags][width].[precision] typecode
  • (name) :可选,用于选择指定的 key
  • flags:可选,可供选择的值有:
    – + 右对齐:正数的加正号,负数的加负号
    – - 左对齐:正数前没有负号,负数前加负号
  • width:可选,占有宽度
  • precision:可选,小数点后保留的位数
  • typecode: 必选,类型码
    – s,获取传入的对象__str__方法的返回值,并将其格式化到指定位置
    – r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
    – c,整数:将数字转换成其 unicode 对应的值,10 进制范围为 0 <= i <=1114111
    – o,将整数转换成八进制表示,并将其格式化到指定位置
    – x,将整数转换成 16 进制,并将其格式化到指定位置
    – d,将整数,浮点数转化为十进制表示,并将其格式化到指定位置

二、字符串的 format() 方法

相比于 C 风格的格式字符串,format() 函数 / 方法是 Python 3 添加的高级字符串格式机制,不在使用 % 操作符。具体分为两种:

  • 内置的 format() 函数:依次传入需要调整格式的 Python 值,以及该值需要具备的格式,即可实现格式化。
  • str.format() 方法,即字符串的 format() 方法:Python 会把 str.format 方法接收的每个值传给内置的 format() 函数,同时找到这个值在格式字符串中对应位置的 {} ,并将其中的格式说明符也传给 format() 函数。
    最后,系统会将调用 format() 函数返回的结果(format(key, ‘<10’) 和 format(value, ‘.2f’) )写入整个格式化字符串中 {} 所在的位置。

三、具体示例

示例1

(1)使用% 格式化操作符输出“字符串”和“整数”

temp1 = 'I am %s, age %d' % ('Mary', 18)
print(temp1)
# 输出:I am Mary, age 18

temp2 = 'I am %(x)s, age %(y)d' % {'x':'Mary', 'y': 18}
print(temp2)
# 输出:I am Mary, age 18

(2)使用 str.format() 方法输出“字符串”和“整数”

temp1 = "I am {}, age {}".format('Mary', 18)
print(temp1)
# 输出:I am Mary, age 18

temp2 = "I am {0}, age {1}".format('Mary', 18)
print(temp2)
# 输出:I am Mary, age 18

示例2

(1)使用% 格式化操作符输出“小数”

temp1 = 'My score is %.3f' % 90.500
print(temp1)
# 输出:My score is 90.500

(2)使用 str.format() 方法输出“小数”

temp2 = 'My score is {:f}'.format(90.500)
print(temp2)
# 输出:My score is 90.500000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值