知行编程网知行编程网  2022-10-17 00:00 知行编程网 隐藏边栏  28 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于一看就懂的Python输入和输出、格式化字符串方法的相关知识,包括字符格式化包括哪些内容,以及c语言格式化输出函数这些编程知识,希望对大家有参考作用。

通俗易懂的Python输入输出、格式化字符串方法

程序的输出可以采用多种形式:我们可以将数据以人类可读的形式打印到屏幕上,或者将其写入文件以供以后使用。


格式化输出

到目前为止,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.

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享