Python

Python 知识量:10 - 41 - 150

8.1 字符串格式><

字符串插入- 8.1.1 -

Python应用中经常需要与外界进行数据交换,包括与用户交互、读写文件、访问网页等,这涉及到输入和输出,常称为I/O。许多情况下,输入输出的数据以字符串的形式进行传递,字符串的格式化是确保字符串以优雅的方式显示和打印的关键。

设置字符串格式的方法之一就是字符串插入。这种方法借鉴了C语言的语法,利用%和转换说明符来实现。下面是一个示例:

>>> x=1/7
>>> print(x)
0.14285714285714285
>>> print('value=%.2f' % x)
value=0.14
>>> print('value=%.4F' % x)
value=0.1429

以上示例中展示了字符串插入的格式,即:format % values。其中,format是包含一个或多个%的字符串,是将要打印的内容。后面的% values用于替换打印内容中的%部分,是实际打印的值。

转换说明符- 8.1.2 -

字符串插入中常用的转换说明符如下所示:

说明符含义
d十进制整数
o八进制整数
x小写的十六进制整数
X大写的十六进制整数
e小写的科学计数法表示的浮点数
E大写的科学计数法表示的浮点数
f或F浮点数
s字符串
%%字符

转换说明符指明了数值的打印格式,下面是浮点数的示例:

>>> x=1/7
>>> print('value=%f' % x)
value=0.142857
>>> print('value=%e' % x)
value=1.428571e-01
>>> print('value=%E' % x)
value=1.428571E-01

在字符串中可以包含任意数量的转换说明符,只要为每个说明符提供一个值即可:

>>> print('value=%f or %e or %E' % (x,x,x))
value=0.142857 or 1.428571e-01 or 1.428571E-01

如上所示,在包含多个转换说明符时,后面替换的值以元组方式提供,它们的排列顺序与替换顺序必须一致。

格式字符串- 8.1.3 -

另一种设置字符串格式的方法是使用格式字符串和字符串函数format():

>>> '{who} likes {what}.'.format(what='apple',who='Jeff')
'Jeff likes apple.'

在格式字符串中,花括号中的内容将被替换,这称为命名替换,通过自定义名称,代码的可读性更佳。此外,还可以使用位置替换:

>>> '{1} likes {0}.'.format('apple','Jeff')
'Jeff likes apple.'

可以在格式字符串中加入转换说明符,示例如下:

>>> '1/7={x}'.format(x=1/7)
'1/7=0.14285714285714285'
>>> '1/7={x:f}'.format(x=1/7)
'1/7=0.142857'
>>> '1/7={x:.3f}'.format(x=1/7)
'1/7=0.143'
>>> '1/7={x:.4e}'.format(x=1/7)
'1/7=1.4286e-01'

有时,数值字符的确切格式事先无法确定,而是在程序执行中确定,这时可以利用花括号临时设置:

>>> '1/7={x:.{y}f}'.format(x=1/7,y=2)
'1/7=0.14'

以上代码中,变量y的值可以在程序运行时临时确定。可见,格式字符串比字符串插入的方式更加灵活,功能更强大。