6.3 printf风格的字符串格式化

占位符:'%' 开始,加宽度、精度等,加转换符。

语法

使用 % 取摸运算符(也叫求余数运算符)。

格式化字符串 % 参数
格式化字符串 % (参数1,参数2, 参数3,...)

格式化字符串中的转换符

常用的转换符

转换符
含意
'd'
有符号的十进制整数。
'f'
十进制格式的浮点 数(小数)。
's'
使用 str() 转换任何 Python 对象。
'%'
不转换参数,在结果中输出一个'%' 字符。

示例

# 此示例示意 C 语言 printf 风格的字符串

# 一个占位符的情况
count = 120
new_str1 = '人数是%d' % count
print(new_str1)

# 多个占位符的情况
title = "圆周率"
pi = 3.141592653589793
new_str2 = '%s的值是%f' % (title, pi)
print(new_str2)

运行结果

人数是120
圆周率的值是3.141593

% 和 转换符 之间的旗标语法

%[- + 0 宽度.精度]类型码

说明

旗标
含意
'#'
值的转换将使用“替代形式”(具体定义见下文)。
'0'
转换将为数字值填充零字符。
'-'
转换值将靠左对齐(如果同时给出 '0' 转换,则会覆盖后者)。
' '
(空格) 符号位转换产生的正数(或空字符串)前将留出一个空格。
'+'
符号字符 ('+''-') 将显示于转换结果的开头(会覆盖 "空格" 旗标)。

示例

>>> "%10d" % 123
'       123'
>>> "%-10d" % 123
'123       '
>>> "%10s" % 'abc'
'       abc'
>>> "%-5s" % 'abc'
'abc  '
>>> "%05d" % 123
'00123'
>>> "%7.3f" % 3.1415926535
'  3.142'
>>> "%07.3f" % 3.1415926535
'003.142'
>>>

全部的转换符

转换符
含意
'd'
有符号十进制整数。
'i'
有符号十进制整数。
'o'
有符号八进制数。
'u'
过时类型 -- 等价于 'd'
'x'
有符号十六进制数(小写)。
'X'
有符号十六进制数(大写)。
'e'
浮点指数格式(小写)。
'E'
浮点指数格式(大写)。
'f'
浮点十进制格式。
'F'
浮点十进制格式。
'g'
浮点格式。 如果指数小于 -4 或不小于精度则使用小写指数格式,否则使用十进制格式。
'G'
浮点格式。 如果指数小于 -4 或不小于精度则使用大写指数格式,否则使用十进制格式。
'c'
单个字符(接受整数或单个字符的字符串)。
'r'
字符串(使用 repr() 转换任何 Python 对象)。
's'
字符串(使用 str() 转换任何 Python 对象)。
'a'
字符串(使用 ascii() 转换任何 Python 对象)。
'%'
不转换参数,在结果中输出一个 '%' 字符。

练习

写一个程序

  1. 输入您的用户名;
  2. 输入您的住址;

用 C 语言 printf 风格的字符串格式化 打印如下格式的内容。

请输入您的姓名:老魏
请输入您的住址:北京市朝阳区
老魏住在北京市朝阳区。

视频讲解