文章目录

  • 1. 用 % 格式化字符串
  • 2. 用 str.format() 格式化字符串


1. 用 % 格式化字符串

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 % 的字符串中。

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

>>> print('My name is %s, I am %d years old.' % ('RJ', 10))
My name is RJ, I am 10 years old.

python字符串格式化符号:

格式化字符

转换方式

%c

转换成字符(ASCII 码值,或者长度为一的字符串)

%r

优先用repr()函数进行字符串转换

%s

优先用str()函数进行字符串转换

%d / %i

转成有符号十进制数

%u

转成无符号十进制数

%o

转成无符号八进制数

%x / %X

(Unsigned)转成无符号十六进制数(x/X 代表转换后的十六进制字符的大小写)

%e / %E

转成科学计数法(e/E 控制输出e/E)

%f / %F

转成浮点数(小数部分自然截断)

%g / %G

%e 和 %f / %E 和 %F 的简写

%%

输出%

格式化操作符辅助指令:

符号

作用

*

定义宽度或者小数点精度

-

用做左对齐

+

在正数前面显示加号( + )

<sp>

在正数前面显示空格

#

在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)

0

显示的数字前面填充‘0’而不是默认的空格

%

‘%%‘输出一个单一的’%’

(var)

映射变量(字典参数)

m.n

m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

>>> '%o' % 100
'144'
>>> '%#o' % 100
'0o144'
>>> '%x' % 100
'64'
>>> '%#x' % 100
'0x64'
>>> '%#X' % 100
'0X64'
>>>
>>> '%f' % 123.456
'123.456000'
>>> '%F' % 123.456
'123.456000'
>>> '%6.2f' % 123.456
'123.46'
>>> '%7.2f' % 123.456
' 123.46'
>>> '%e' % 1234.5678
'1.234568e+03'
>>> '%E' % 1234.5678
'1.234568E+03'

将元祖类型的参数作转换

>>> 'My name is %s, I am %d years old' % ('RJ', 10)
'My name is RJ, I am 10 years old'

将字典类型的参数作转换

>>> 'My name is %(name)s,  I am %(age)d years old' % {'age': 10, 'name': 'RJ'}
'My name is RJ,  I am 10 years old'

将字符串作为调试工具
字符串格式化操作符不仅很酷,易用,上手快,而且是一个非常有用的调试工具。事实上,所有的Python 对象都有一个字符串表示形式(通过repr()函数,’’ 或str()函数来展现).print 语句自动为每个对象调用str()函数.更好的是,在定义自己的对象时,你可以利用"钩子"为你的对象创建字符串表达形式. 这样,repr(),str()或`` 或者print 被调用时,就可以获得一个适当的字符串描述信息.即使在坏的不能再坏的情况下,repr()或者str()也不能显示一个对象的信息时,Pythonic 方式的默认做法最起码能给你返回想如下格式的信息:

<... something that is useful ...>.

2. 用 str.format() 格式化字符串

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {}: 来代替以前的 %

format 函数可以接受不限个参数,位置可以不按顺序。

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'

str.format() 格式化数字的多种方法:
format 格式化方法