文档章节

python中的格式输出标记

长平狐
 长平狐
发布于 2012/11/28 15:42
字数 1007
阅读 27
收藏 0

 

在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形式为

  • 格式标记字符串 % 要输出的值组

其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。重点来看左边的部分。左边部分的最简单形式为:

  • %cdoe

其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求完全可以全部使用’%s‘来标记。比如:

  • '%s %s %s' % (1, 2.3, ['one', 'two', 'three'])

它的输出为'1 2.3 ['one', 'two', 'three']',就是按照%左边的标记输出的。虽然第一个和第二值不是string类型,一样没有问题。在这个过程中,当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。前面说过还有一个repr()函数,如果要用这个函数,可以用%r来标记。除了%s外,还有很多类似的code:

  • 整型数:%d
  • 无符号整型数:%u
  • 八进制:%o
  • 十六进制:%x   %X
  • 浮点数:%f
  • 科学记数法: %e   %E
  • 根据数值的不同自动选择%e或%f: %g
  • 根据数值的不同自动选择%E或%f: %G

就跟前面说用\进行转义一样,这里用%作为格式标记的标识,也有一个%本身应该如何输出的问题。如果要在”格式标记字符串“中输出%本身,可以用%%来表示。
上面说的只是格式标记的最简间的形式,来看复杂一点的:

  • ‘%6.2f’ % 1.235

在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。还有更复杂的:

  • ‘%06.2f’ % 1.235

在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。这一行的输出为‘001.24’,可以看到小数也占用一位。类似于这里0这样的标记还有-、+。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。最后来看最复杂的形式:

  • ‘%(name)s:%(score)06.1f’ %{'score':9.5, 'name':'newsim'}

这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键。前面的例子可以看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是一一对应的,有顺序,一对一,二对二。而在这种形式中,则不是,每个格式标记对应哪个值由小括号中的键来指定。这行代码的输出为:'newsim:0009.5'。

 

有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f。可以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:'%*.*f' % (6, 2, 2.345)就相当于'%6.2f' % 2.345。

这是这本书到此为止看起来最复杂的内容。不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个"+"来构造类似的输出字符串。这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。

 

formatter = "%r %r %r %r"


print formatter % (1, 2, 3, 4)
print formatter % ("one", "two", "three", "four")
print formatter % (True, False, False, True)
print formatter % (formatter, formatter, formatter, formatter)
print formatter % (
    "I had this thing.",
    "That you could type up right.",
    "But it didn't sing.",
    "So I said goodnight."
)


原文链接: http://blog.csdn.net/mypc2010/article/details/8228130

本文转载自:http://blog.csdn.net/mypc2010/article/details/8228130

长平狐

长平狐

粉丝 217
博文 234
码字总数 0
作品 0
福州
私信 提问
python字符串格式化输出及相关操作代码举例

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

小星星程序员
2014/08/15
948
0
Markdown 还是 reStructuredText

Markdown 还是 reST ==================== 胡言乱语,未完待续,之所以发出来是因为不想再像其他文章一样,一直在草稿箱里直到只剩删除的价值。 什么是什么? ——————– Markdown和reS...

不必在乎朕是谁
2013/07/13
2.1K
1
NEO Python编译器介绍

neo-boa编译器介绍 neo-boa编译器可将Python文件编译为.avm格式,在Neo虚拟机中运行。NEO虚拟机可在Neo区块链上执行合约。 编译器支持Python语言子集(python语言子集与python的关系类似于蟒...

NEO-FANS
2018/12/11
19
0
sphinx+reStructuredText 文档写作

文章目录 1. 简介 spinx Sphinx 是一种文档工具,它可以令人轻松的撰写出清晰且优美的文档, 由 Georg Brandl 在BSD 许可证下开发. 新版的Python文档 就是由Sphinx生成的, 并且它已成为Pytho...

一銤阳光
01/27
0
0
使用 sphinx 制作简洁而又美观的文档

简介: 学习如何使用 Sphinx 工具创建能够以各种格式(如 HTML)自动进行分布的可维护的、样式支配的文档。 简介 Sphinx 是一种工具,它允许开发人员以纯文本格式编写文档,以便采用满足不同...

IBMdW
2012/01/18
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot初探---spring-boot-starter-web究竟干了啥

上一篇已经简单介绍了启动类的部分,这一篇主要讨论一下springboot引入的哪些依赖 我们都知道想用springboot做一个web应用,首先要做的是引入相关依赖,两步操作: 1、添加spring-boot-start...

计算机狼
58分钟前
6
0
基于Rocket.chat搭建内网聊天系统(使用docker,本机不需要安装meteor)

您可能不希望使用标准的Docker命令,而是希望对部署进行更多的自动化管理。这就是使用Docker-compose可能会派上用场的地方。 确保您已安装Docker和Docker-compose并且可以正常运行。 docker...

吴伟祥
今天
8
0
conda 更新源

更新conda 源为阿里源 conda config --add channels http://mirrors.aliyun.com/pypi/simple conda config --set show_channel_urls yes 阿里云: http://mirrors.aliyun.com/pypi/simple/ 豆......

Mr_Tea伯奕
今天
5
0
java 泛型使用

每次写泛型方法都翻下百度,还是自己记录下把。 1、定义一个泛型方法,使用传入参数类型来传递泛型。这种用法在封装json序列化工具类应该会用到。 List<xxx> aa = getList(xxx.class);pr...

朝如青丝暮成雪
今天
7
0
深入了解Java模板引擎Freemarker

前言 常用的Java模板引擎包括:JSP、Freemarker、Thymeleaf、Velocity,从Github上查阅到这几款主流的模板引擎的性能的对比,总体上看,JSP、Freemarker、Thymeleaf、Velocity在性能上差别不...

code-ortaerc
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部