Python3.2官方文档教程---格式化输出

2024-03-02 20:48

本文主要是介绍Python3.2官方文档教程---格式化输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一个程序的输出有好多种方式,数据既可以用人们读懂的形式打印出来或者写入到文件以便将来使用。这章就讨论这些问题。

5.1 格式化输出

目前我们已经接触了两种输出值方式: 表达式语句和print()函数。(第三种就是使用file对象中的write()方法;标准的文件输出可参考sys.stdout库文件)

 

常常你会想控制输出格式化的数据而不是简单用空格分隔的字符。这里有两种方式用来格式化你的输出数据。第一种方式就是由你自己处理所有的字符串,用字符串中的切分或者链接操作你可以创建任何你想要是的字符。标准模块string包含一些将字符串填充到指定列宽度的有用操作,随后将会讨论这些。第二种方法就是使用str.format()方法。

 

String模块中包含一个template类,它提供另一种方法来将值转化为字符串形式。当然存在一个问题:你如何把值转化为字符串? 幸运的是,python已经提供了任何值转化为字符串的各种方法:把值传给方法repr()或者str();

 

Str()函数用来返回一个更方便人读的形式。而repr()方法用来产生一个解释器方便的形式。(如果没有相等的语句就会产生syntaxerror)。对于一个没有可以提供可供人方便读的特殊形式,str()返回值与repr()返回值相同。对于更多的值例如数字或者类似于列表和字典的结构, 都用这两种方法可以产生同样的表现形式。 特别地,字符串有两个不同的表现实现。

例如:

>>> 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...

>>> # The repr() of a string adds string quotes and backslashes:

... hello = hello, world\n

>>> hellos = repr(hello)

>>> print(hellos)

hello, world\n

>>> # The argument to repr() may be any Python object:

... repr((x, y, (spameggs)))

"(32.5, 40000, (spameggs))"

 

这有两种方法来输出平方和立方的表格:
>>> for x in range(1, 11):

... print(repr(x).rjust(2), repr(x*x).rjust(3), end=’ ’)

... # Note use of end’ on previous line

... print(repr(x*x*x).rjust(4))

...

1 1 1

2 4 8

3 9 27

4 16 64

5 25 125

6 36 216

7 49 343

8 64 512

9 81 729

10 100 1000

 

>>> for x in range(1, 11):

... print({0:2d} {1:3d} {2:4d}.format(x, x*x, x*x*x))

...

1 1 1

2 4 8

3 9 27

4 16 64

5 25 125

6 36 216

7 49 343

8 64 512

9 81 729

10 100 1000

(注意在第一个例子中,用方法print()在每列中添加了空格:它也可以会在参数之间添加空格)

 

在例子的方法描述了字符串类中的str.rjust()方法应用。它通过在字符串左侧填充指定宽度的空格以致右对齐。还有两个类似的方法:str.ljust()str.center()、这些方法不是用来写任何数据,它们会返回一个新的字符串。如果输入的字符串太长,它们不会截断它,而是原样返回。这也许是你的列表局混乱,但是比截断更好,那样会输出错误的值(如果你想截断,你总会可以使用切片操作,如x.ljust(n)[:n]

还有一个方法:zfile(),使用零在数字字符串左侧填充(到指定宽度)。它可以理解正负号。

>>> 12.zfill(5)

00012

>>> -3.14.zfill(7)

-003.14

>>> 3.14159265359.zfill(5)

3.14159265359

Str.format()方法的基本用法就像下面一样:

>>> print(We are the {} who say "{}!".format(knightsNi))

We are the knights who say "Ni!"

 

括号以及包含的字符(称为格式域)会被传入str.format()的对象所替代。在括号中的数据

指代传递给格式化方法对象的位置。

>>> print({0} and {1}.format(spameggs))

spam and eggs

>>> print({1} and {0}.format(spameggs))

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(BillManfred,

other=Georg))

The story of Bill, Manfred, and Georg.

!a’ (apply ascii()), !s’ (apply str()) and !r’ (apply repr())这些方法可以用来在格式化前转化数值。
>>> import math

>>> print(The value of PI is approximately {}..format(math.pi))

The value of PI is approximately 3.14159265359.

>>> print(The value of PI is approximately {!r}..format(math.pi))

The value of PI is approximately 3.141592653589793.

字符名称后面可以跟一个可选的“:”符号和格式化分类符,这也是如何更好的控制格式化值得方法。下面的实例将PI小数点后截取为三位。 

>>> import math

>>> print(The value of PI is approximately {0:.3f}..format(math.pi))

The value of PI is approximately 3.142.

在“:”后传递一个整数将会设置这个字符宽度的最小字数。这个对美化表格很有用途。

>>> table = {Sjoerd: 4127, Jack: 4098, Dcab: 7678}

>>> for name, phone in table.items():

... print({0:10} ==> {1:10d}.format(name, phone))

...

Jack ==> 4098

Dcab ==> 7678

Sjoerd ==> 4127

如果你有一个比较长的格式化字符,但是你不想把它分开, 使用名称代替位置来引用被各式化的变量将更好,这可以简单通过传递一个字典,并且使用方括号‘【】’访问所有的主键。

>>> 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

这在与新的内置函数vars()结合时尤为有用,它返回一个包含所有本地变量的字典,字符串格式化方法str.format()的完成介绍请参考Format String Syntax

5.1.1 旧式字符串格式化

 

%操作符也可以用来格式化字符串,它像:cfunc:’sprintf-’格式化字符串风格一样解释左参数并作用于右参数,并且从该格式化操作中返回字符串结果,例如:

>>> import math

>>> print(The value of PI is approximately %5.3f.’ % math.pi)

The value of PI is approximately 3.142.

由于str.format()是新增方法,python的许多代码仍然用%操作符。但是,由于这个旧格式化风格最终会从语言中移除掉。Str.format就会普遍应用。 

更多的信息请查看旧式字符串格式化 部分。

这篇关于Python3.2官方文档教程---格式化输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/767382

相关文章

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

Java进行日期解析与格式化的实现代码

《Java进行日期解析与格式化的实现代码》使用Java搭配ApacheCommonsLang3和Natty库,可以实现灵活高效的日期解析与格式化,本文将通过相关示例为大家讲讲具体的实践操作,需要的可以... 目录一、背景二、依赖介绍1. Apache Commons Lang32. Natty三、核心实现代

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

exfat和ntfs哪个好? U盘格式化选择NTFS与exFAT的详细区别对比

《exfat和ntfs哪个好?U盘格式化选择NTFS与exFAT的详细区别对比》exFAT和NTFS是两种常见的文件系统,它们各自具有独特的优势和适用场景,以下是关于exFAT和NTFS的详细对比... 无论你是刚入手了内置 SSD 还是便携式移动硬盘或 U 盘,都需要先将它格式化成电脑或设备能够识别的「文

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方