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 相关文章推荐
windows下安装python paramiko模块的代码
Feb 10 Python
Python open()文件处理使用介绍
Nov 30 Python
python根据开头和结尾字符串获取中间字符串的方法
Mar 26 Python
Python中__new__与__init__方法的区别详解
May 04 Python
Python中单例模式总结
Feb 20 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
Python3离线安装Requests模块问题
Oct 13 Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 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写MySQL数据 实现代码
2009/06/15 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
php curl_init函数用法
2014/01/31 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Python内置函数dir详解
2015/04/14 Python
Python表示矩阵的方法分析
2017/05/26 Python
python matlibplot绘制3D图形
2018/07/02 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
给分销商的致歉信
2014/01/14 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
2014年教师节寄语
2014/04/03 职场文书
目标责任书范本
2014/04/16 职场文书
法律意见书范本
2015/06/04 职场文书