Python中用format函数格式化字符串的用法


Posted in Python onApril 08, 2015

自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足。那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱。
语法

它通过{}和:来代替%。
“映射”示例

通过位置

In [1]: '{0},{1}'.format('kzc',18) 
Out[1]: 'kzc,18' 
In [2]: '{},{}'.format('kzc',18) 
Out[2]: 'kzc,18' 
In [3]: '{1},{0},{1}'.format('kzc',18) 
Out[3]: '18,kzc,18'

字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
通过关键字参数

In [5]: '{name},{age}'.format(age=18,name='kzc') 
Out[5]: 'kzc,18'

通过对象属性

class Person: 
  def __init__(self,name,age): 
    self.name,self.age = name,age 
    def __str__(self): 
      return 'This guy is {self.name},is {self.age} old'.format(self=self)
In [2]: str(Person('kzc',18)) 
Out[2]: 'This guy is kzc,is 18 old'

通过下标

In [7]: p=['kzc',18]
In [8]: '{0[0]},{0[1]}'.format(p)
Out[8]: 'kzc,18'

有了这些便捷的“映射”方式,我们就有了偷懒利器。基本的python知识告诉我们,list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。
格式限定符

它有着丰富的的“格式限定符”(语法是{}中带:号),比如:

填充与对齐
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
比如

In [15]: '{:>8}'.format('189')
Out[15]: '   189'
In [16]: '{:0>8}'.format('189')
Out[16]: '00000189'
In [17]: '{:a>8}'.format('189')
Out[17]: 'aaaaa189'

精度与类型f
精度常跟类型f一起使用

In [44]: '{:.2f}'.format(321.33345)
Out[44]: '321.33'

其中.2表示长度为2的精度,f表示float类型。

其他类型
主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。

In [54]: '{:b}'.format(17)
Out[54]: '10001'
In [55]: '{:d}'.format(17)
Out[55]: '17'
In [56]: '{:o}'.format(17)
Out[56]: '21'
In [57]: '{:x}'.format(17)
Out[57]: '11'

用,号还能用来做金额的千位分隔符。

In [47]: '{:,}'.format(1234567890)
Out[47]: '1,234,567,890'
Python 相关文章推荐
Python中尝试多线程编程的一个简明例子
Apr 07 Python
python内存管理分析
Apr 08 Python
Python HTMLParser模块解析html获取url实例
Apr 08 Python
使用Python中的tkinter模块作图的方法
Feb 07 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
使用Python进行AES加密和解密的示例代码
Feb 02 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
pandas的相关系数与协方差实例
Dec 27 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 Python
简单介绍Python中的JSON模块
Apr 08 #Python
Python实现把xml或xsl转换为html格式
Apr 08 #Python
Python正则表达式匹配HTML页面编码
Apr 08 #Python
在Python中关于中文编码问题的处理建议
Apr 08 #Python
Python脚本实现格式化css文件
Apr 08 #Python
Python实现获取操作系统版本信息方法
Apr 08 #Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 #Python
You might like
非常实用的php验证码类
2016/05/15 PHP
PHP文件操作实例总结
2016/09/27 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
python通过yield实现数组全排列的方法
2015/03/18 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
python实现猜单词小游戏
2020/05/22 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
Ejb技术面试题
2015/04/29 面试题
幼师求职自荐信范文
2014/01/26 职场文书
语文教学感言
2014/02/06 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
贷款委托书
2014/08/01 职场文书
工作检讨书怎么写
2015/01/23 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android