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使用urllib2获取网络资源实例讲解
Dec 02 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
pandas 选择某几列的方法
Jul 03 Python
详解python中的装饰器
Jul 10 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
python多线程和多进程关系详解
Dec 14 Python
用python获取txt文件中关键字的数量
Dec 24 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 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
?生?D片??C字串
2006/12/06 PHP
php实现每日签到功能
2018/11/29 PHP
PHP的PDO连接讲解
2019/01/24 PHP
javascript IFrame 强制刷新代码
2009/07/23 Javascript
innerText 使用示例
2014/01/23 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
js插件实现图片滑动验证码
2020/09/29 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
Python爬取国外天气预报网站的方法
2015/07/10 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
主管会计岗位责任制
2014/02/10 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
运动会3000米加油稿
2015/07/21 职场文书
小学三年级数学教学反思
2016/02/16 职场文书