Python字符串格式化

摘要:
http://www.cnblogs.com/JerySpace/archive/2010/12/17/1909621.html字符串的格式化在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形式为格式标记字符串%要输出的值组其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的'值组'如果有两个及以上的值则需要用小括号

http://www.cnblogs.com/JerySpace/archive/2010/12/17/1909621.html

字符串的格式化

在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代替,或者用多个"+"来构造类似的输出字符串。这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。

象C 中的sprintf函数一样,可以用“%”来格式化字符串。

Table3.1.字符串格式化代码

格式描述
%%百分号标记
%c字符及其ASCII码
%s字符串
%d有符号整数(十进制)
%u无符号整数(十进制)
%o无符号整数(八进制)
%x无符号整数(十六进制)
%X无符号整数(十六进制大写字符)
%e浮点数字(科学计数法)
%E浮点数字(科学计数法,用E代替e)
%f浮点数字(用小数点符号)
%g浮点数字(根据值的大小采用%e或%f)
%G浮点数字(类似于%g)
%p指针(用十六进制打印值的内存地址)
%n存储输出字符的数量放进参数列表的下一个变量中

免责声明:文章转载自《Python字符串格式化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux shell awk中printf使用添加菜单栏自绘按钮下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pycharm上传文件目录到Linux

前言:相信不少学Python或者正在编写项目的Python爱好者都在用pycharm,有时候要上传文件目录到Linux服务器,比较麻烦,但是Pycharm已经有这个功能了,详细实现如下 1、打开Pycharm编辑器,选择选项Tools-Deployment-Configuration 2、填写命名,这个可以随便起,选择Type为SFTP 3、填写服务...

Python map 函数 -Python零基础入门教程

目录 一.前言 二.Python map 函数语法简介 三.Python map 函数实战 1.使用 map 函数 2.map 函数配合 lambda 匿名函数一起使用 四.Python map 函数效率对比 五.Python map 函数总结 六.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Pyt...

Python中使用中文

这个问题曾在我初学Python的时候令我头疼不已,尤其是目前我们因为各种包的原因还只能使用2.x的版本。在3.x中字符编码已经统一用Unicode了。 Python 默认支持的是ASCII字符,包含了英文字母大小写以及标点符号,用一枚字节表示。中文则使用两枚字节表示。 没兴趣的同学可以绕过这段… 有人可能要问了,我擦,为神马以前说一个汉字的精度越高字节越多...

python自动化环境搭建

1 selenium环境搭建1.1seleniumselenium是测试web应用程序的框架,selenium为没有测试脚本的人提供了(seleniumide)提供了录制/回放的工具,同时它也提供了特定域的语言来编写测试脚本,如c#,java,python等,selenium可以针对最现代的web浏览器运行测试,如firefox,chrome,ie,ope...

python__007内置函数

本文摘自:https://docs.python.org/3/library/functions.html?highlight=built#ascii            内置功能     abs() delattr() hash() memoryview() set() all() dict() help() min() s...

Python开发利器WingIDE破解方法

“工欲善其事,必先利其器。”刚开始接触Python的人大都用自带的LDLE,尽管它对于初学该语言非常有帮助,但许多开发人员更喜欢其它文本编辑器或集成开发环境。(IDEs)在此我不想展开阐述,Python 社区维护了一份Python 相关编辑器的清单, 涵盖了各种各样支持平台和软件许可协议。但是所给出的编辑器个人认为都不是很理想,一直想找一个类似于php的Z...