程序的输出可以采用多种形式:我们可以将数据以人类可读的形式打印到屏幕上,或者将其写入文件以供以后使用。
格式化输出
到目前为止,Python中有两种输出值的方式:表达式语句和print()函数。 (第三种方法是使用文件对象的 write() 方法;标准文件输出请参考 sys.stdout 方法,在库参考手册中有详细说明。)
通常,你会希望对程序输出的格式有更多的控制,而不是简单地打印以空格分隔的值。在 Python 中,有以下几种格式化输出的方法:
对字符串使用 f 字符串。此类字符串需要在引号前以 f 或 F 开头的字符串。你可以使用 { 和 } 包装要嵌入字符串的 Python 表达式。表达式可以是变量或文字值。
>>> year = 2016 ; event = 'Referendum'
>>> f'Results of the {year} {event}'
'Results of the 2016 Referendum'
str.format() 是格式化字符串的第二种方法。与第一种方法相比,这种方法需要你进行更多的操作。你仍然可以使用 { 和 } 在字符串中内联变量,并且可以进行详细的格式化。但这需要你提供相应的格式化内容。
当然,你也可以通过对字符串进行切片和连接来格式化字符串。此方法可以创建你想要的任何格式。在字符串类型中,有一些方法可以根据指定的列宽填充字符串。
如果你只想在调试时打印一些变量而不格式化输出,你还可以使用 repr() 函数或 str() 函数将任何值转换为字符串。
str() 函数以人类可读的形式呈现值,而 repr() 函数以解释器可读的形式呈现值(如果没有相应的转换语法,则会引发 SyntaxError 异常)。如果对象没有人类可读的形式,则 str() 函数返回与 repr() 函数相同的值。在Python中,数字等结构,或者链表和字典,以上两个函数都有自己统一的表示方式。但是对于字符串来说,以上两个函数都有自己独特的渲染方式。
如下示例:
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"
>>> str(1/7)
'0.14285714285714285'
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '...'
>>> print(s)
The value of x is 32.5, and y is 40000...
>>> # 对于字符串,repr() 函数会添加引号以及反斜杠:
... hello = 'hello, world\n'
>>> hellos = repr(hello)
>>> print(hellos)
'hello, world\n'
>>> # repr() 函数的参数也可以是某个 Python 对象:
... repr((x, y, ('spam', 'eggs')))
"(32.5, 40000, ('spam', 'eggs'))"
string 模块包含 Template 类,以提供将变量嵌入字符串的附加方法。该方法使用 $x 等占位符来嵌入变量,变量的值存储在字典中。这种方法对字符串格式的控制较少。
格式化字符串文字
格式化字符串文字(简称 f 字符串)允许你通过在字符串前面加上 f 或 F 并以 {expression} 格式编写表达式来将 Python 表达式的值包含在字符串中。
可以在表达式之后添加格式说明符。这允许对表达式值的输出格式进行更多控制。以下示例将 PI 舍入到小数点后三位。
>>> import math
>>> print(f'The value of pi is approximately {math.pi:.3f}.')
':' 后面的整数表示字段的最小字符数,对于列排序很有用。
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
... print(f'{name:10} ==> {phone:10d}')
...
Sjoerd ==> 4127
Jack ==> 4098
Dcab ==> 7678
其他修饰符也可用于转换要格式化的值。 '!a' 表示应用 ascii() 函数,'!s' 表示应用 str() 函数,而 '!r' 表示应用 repr() 函数:
>>> animals = 'eels'
>>> print(f'My hovercraft is full of {animals}.')
My hovercraft is full of eels.
>>> print('My hovercraft is full of {animals !r}.')
My hovercraft is full of 'eels'.
有关这些格式规范的参考,请参阅参考指南 Minimal String Formatting。
format () 字符串格式化方法
str.format() 的基本使用方法如下:
>>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
We are the knights who say "Ni!"
括号和字符(称为格式字段)被传递给 str.format() 方法的对象替换。括号中的数字可用于指示传递给 str.format() 方法的对象的位置。
>>> print('{0} and {1}'.format('spam', 'eggs'))
spam and eggs
>>> print('{1} and {0}'.format('spam', 'eggs'))
eggs and spam
如果在 str.format() 方法中使用了关键字参数,则其值等于参数名称对应的值。
>>> print('This {food} is {adjective}.'.format(
... food='spam', adjective='absolutely horrible'))
This spam is absolutely horrible.
位置和关键字参数可以任意组合:
>>> print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
other='Georg'))
The story of Bill, Manfred, and Georg.
如果你有一个不想拆分的长字符,则使用名称而不是位置进行格式化会是更好的方法。这可以简单地使用'[]'符号来获取字典中的键
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; '
... 'Dcab: {0[Dcab]:d}'.format(table))
Jack: 4098; Sjoerd: 4127; Dcab: 8637678
上述方法也可以使用'**'来传递字典中的信息。
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
Jack: 4098; Sjoerd: 4127; Dcab: 8637678
传统字符串格式化方法
运算符 '%' 也可用于格式化字符串。它将运算符的左侧参数解释为 'sprintf()' 样式的字符串,将其应用于运算符的右侧参数,并返回该字符串。例如:
>>> import math
>>> print('The value of pi is approximately %5.3f.' % math.pi)
The value of pi is approximately 3.142.
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 什么是python默认索引11/27
- ♥ python如何根据字典的key删除元素12/22
- ♥ 干货合集 |用 Python 求解数学方程式01/14
- ♥ 如何理解python中的Prewitt算子11/25
- ♥ Python变量及其使用01/10
- ♥ 如何使用 Python 的 Arcade 库?11/01
内容反馈