字符串格式化表达式——格式化表达式基础

未匹配的标注

因为字符串格式化表达式是这个领域的最早方法,所以从它开始。Python定义 % 二进制操作符作用于字符串(或许你还记得这也是除法的余数,或modulus(求余运算符)(数字操作符))。当应用到字符串时,%操作符提供了根据格式化定义将值格式化为字符串的一种简单方法。简言之,%操作符提供了一次性编码多个字符串替换的紧凑方式,而非一个个构建和连接各个部分。

要格式化字符串:

  1. %操作符的左边,提供一个格式字符串,它包含一个或多个嵌套的转换目标,每个都以%开头(比如:%d)。
  2. %操作符的右边,提供对象(或嵌套在元组中的多个对象),让Python将其插入左边的格式字符串来替换转换目标(或多个目标)。

比如,在本章之前看到的格式化例子中,整数1替换了左边的格式化字符串%d,字符串'dead'替换了%s。结果是一个反映了这两个替换的新字符串,它可能被打印或保存以备它用:

>>> 'That is %d %s bird!' % (1, 'dead') # 格式化表达式
That is 1 dead bird!

技术上讲,字符串格式化表达式通常可选——通常可以使用多个连接和转换来完成类似工作。然而,格式化允许将多个步骤合为一个操作。它足够强大以至于有必要多举几个例子:

>>> exclamation = 'Ni'
>>> 'The knights who say %s!' % exclamation # 字符串替换
'The knights who say Ni!'
>>> '%d %s %g you' % (1, 'spam', 4.0) # 特定类型的替换
'1 spam 4 you'
>>> '%s -- %s -- %s' % (42, 3.14159, [1, 2, 3]) # 所有类型都匹配 %s 目标
'42 -- 3.14159 -- [1, 2, 3]'

这里的第一个例子将字符串'Ni'插入左边的目标,替换%s标记。在第二个例子中,三个值被插入目标字符串。注意当插入多于一个值时,需要将这些值包裹在右边的小括号中(也即是,放入元组)。%格式化表达式操作符在右边期待单个值或一个或多个值组成的元组。

第三个例子再次插入3个值——一个整数,一个浮点对象,和一个列表对象——但注意在左边所有目标都是 %s,它代表转为字符串。因为每个对象类型都可以被转为字符串(打印时显示的那个),所以每种对象类型都适合于 %s 转换码。因此,除非将进行一些特殊的格式化,%s通常是格式化表达式需要记住的唯一格式类型码。

再说一次,记住格式化总是创建一个新对象,而非改变左边的字符串;因为字符串是不可变的,它必须如此工作。和以前一样,如果需要保留它,将结果分配给一个变量名。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~