字符串操作符
操作符 *
操作符 *
可以实现将字符串重复 n(整数)遍相连接:
'Python' * 3
'PythonPythonPython'
n 是小于 1 的整数,则得到空字符串:
'Python' * -1
''
*
操作符可以与 =
连用,重复拼接并赋值:
a = 'py'
a *= 3
a
'pypypy'
由于字符串是可迭代对象,因此可以使用 *
对字符串进行拆包:
(*'Python',)
('P', 'y', 't', 'h', 'o', 'n')
操作符 %
字符串使用 %
操作符,官方文档叫 “printf 风格的字符串格式化”。比较早的格式化方法,官方已不推荐使用,了解它能更好地读懂别人的代码。
转换标记符包含两个或更多字符并具有以下组成,且必须遵循如下规定的顺序:
- ‘%’ 字符,用于标记转换符的起始。
- 映射键(可选),由加圆括号的字符序列组成。
- 转换旗标(可选),用于影响某些转换类型的结果。
- 最小字段宽度(可选)。如果指定为 ‘*’ (星号),则实际宽度会从 values 元组的下一元素中读取,要转换的对象则为最小字段宽度和可选的精度之后的元素。
- 精度(可选),以在 ‘.’ (点号) 之后加精度值的形式给出。如果指定为 ‘*’ (星号),则实际精度会从 values 元组的下一元素中读取,要转换的对象则为精度之后的元素。
- 长度修饰符(可选)。
- 转换类型。
'hi %r' % 'python'
"hi 'python'"
'%s %r' % ('hi','python')
"hi 'python'"
转换旗标为:
标志 | 含义 |
---|---|
‘#’ | 值的转换将使用“替代形式”。 |
‘0’ | 转换将为数字值填充零字符。 |
‘-’ | 转换值将靠左对齐(如果同时给出 ‘0’ 转换,则会覆盖后者)。 |
’ ' | (空格) 符号位转换产生的正数(或空字符串)前将留出一个空格。 |
‘+’ | 符号字符 (’+’ 或 ‘-’) 将显示于转换结果的开头(会覆盖 ”空格” 旗标)。 |
'A is %#x' % 18
'A is 0x12'
'A is % d' % 18
'A is 18'
'A is %05o' % 18
'A is 00022'
转换类型为:
转换符 | 含义 |
---|---|
’d’ | 有符号十进制整数。 |
‘i’ | 有符号十进制整数。 |
‘o’ | 有符号八进制数。 |
‘x’ | 有符号十六进制数(小写)。 |
‘X’ | 有符号十六进制数(大写)。 |
’e’ | 浮点指数格式(小写)。 |
‘E’ | 浮点指数格式(大写)。 |
‘f’ | 浮点十进制格式。 |
‘F’ | 浮点十进制格式。 |
‘g’ | 浮点格式。如果指数小于 -4 或不小于精度则使用小写指数格式,否则使用十进制格式。 |
‘G’ | 浮点格式。如果指数小于 -4 或不小于精度则使用大写指数格式,否则使用十进制格式。 |
‘c’ | 单个字符(接受整数或单个字符的字符串)。 |
‘r’ | 字符串(使用repr() 转换任何 Python 对象)。 |
’s’ | 字符串(使用str() 转换任何 Python 对象)。 |
‘a’ | 字符串(使用ascii() 转换任何 Python 对象)。 |
‘%’ | 不转换参数,在结果中输出一个 ‘%’ 字符。 |
'%f' % 3.14
'3.140000'
'%.3e' % 3.14
'3.140e+00'
'%.1f%%' % (3.14*100)
'314.0%'
当右边的参数为一个字典(或其他映射类型)时,字符串中的格式 必须包含加圆括号的映射键,对应 %
字符之后字典中的每一项。映射键将从映射中选取要格式化的值:
'%(language)s has %(number)03d quote types.' %\
{'language': "Python", "number": 2}
'Python has 002 quote types.'