format相对于老版的%有很多优点
1.不需要理会数据类型
2.单个参数可以多次输出,参数顺序可以不同
3.填充方式十分灵活,对齐方式异常强大
4.官方推荐用的方式,%方式在后面的版本终将会被淘汰

一、str.format()方法会返回一个新的字符串,在新的字符串中,原字符串的替换字段被适当格式化后的参数替换,如下:
‘I love {0} ,I study {0} {1} years’.format(‘python’, 5) ==>I love python,I study python 5 years

format格式:
“{[field_name][!conversion][:][[fill]align][sign][#][0][width][,][.precision][type]}”.format()

1.字段名field_name
(1)每个替换字段由包含在花括号中的field_name标识的,如果field_name是简单的整数,就将被作为传递给str.format()的一个参数的索引位置,这种情况下,{0}、{1}..分别被format参数列表的第1、2….个参数代替,如果需要输出花括号,那就写两遍:{{0}}

(2)可以很容易连接字符串其他数据类型,当然也可以用来连接字符串,但最好用str.join
“I {0}{1}{2}”.format(‘你’,[1,2],(‘as’,3))===> “I 你[1, 2](‘as’, 3)”

(3)字段名为关键字参数的名称:关键字参数要在所有位置参数后
“{who} turned {age} this year”.format(who=’she’, age=88)==>she turned 88 this year
“the {who} was {0} this year”.format(12, who=’boy’)==>the boy was 12 this year

(4)字段名可以引用集合类型数据:利用列表、字符串、元组的索引
l=[‘python’, ‘c’, ‘c++’, ‘ruby’, ‘java’]
‘I learn {0[1]} first,then {0[2]} and {0[4]},finally I for in love with {0[0]}’.format(l) ==> ‘I learn c first,then c++ and java,finally I for in love with python’

(5)字典类型的参数:
d=dict(a=’hello’, b=’world’) =====>{“a”:”hello”, “b”:”world”}
“{0[a]} {0[b]}!!!”.format(d) ======>’hello world!!!’
这里需要注意的是:{0[a]}这里的a没有引号,加了会报错,但是如果是单纯的字典利用key取values的时候必须加引号:d[‘a’],d[‘b’]

(6)用句点引用参数的属性值
import math
“math.pi == {0.pi}”.format(math) ===>’math.pi == 3.141592653589793’

(7) py3.1以后,忽略字段名成为可能,这种情况下,Python会自动的进行处理
“{}:{}:{}”.format(‘a’,’b’,’c’) ===> ‘a:b:c’

(8)序列解析传参技术
“{0}{1}{2}”.format(*[1,2,3]) ==>’123’
“{0} {1}{2}”.format(*(‘hello’,’world’,3)) ==>’hello world3’
“{a} {b} {c}”.format(**{‘a’:’I’, ‘b’:’love’, ‘c’:’python’}) ===> ‘I love python’

2.转换conversion:!s !r !a
通过向字段中添加conversion指定符可以强制指定结果是以字符串形式输出还是以表象形式输出;有三个这种指定符:s,用于强制使用字符串形式,r,用于强制使用表象形式,a用于强制使用表象形式但仅限于ASCII字符:
import decimal
“{0} {0!s} {0!r} {0!a}”.format(decimal.Decimal(‘93.4’)) ==>”93.4 93.4 Decimal(‘93.4’) Decimal(‘93.4’)”

由于上面这个字符串仅由ASCII字符组成,所有!r和!a一样,下面这种方法可以阻止非ascii字符输出
“{0} {0!s} {0!r} {0!a}”.format(“我爱python”) ==>”我爱python 我爱python ‘我爱python’ ‘\u6211\u7231python’”

3.格式规约(这部分讲的是冒号之后的部分):[[fill]align][sign][#][0][width][,][.precision]

对于字符串而言,我们可以控制的包括填充字符、字段内对其方式、字段宽度(最大值、最小值)、整数分隔符(一般是逗号),浮点数精度控制

(1)fill填充字符可以是除{外的字符,一般可以是0,#,*等,但是只能为1个字符,这里需要注意的是如果指定了fill,就一定要指定对齐字符align,对齐有下面三种:向左对齐<;向右对齐>;居中对齐^;再之后为可选的最小宽度和最大宽度(最大宽度前面加上句点.)
例子:
s=’The sword of truth’
‘{0:25}’.format(s) ==> ‘The sword of truth ’
‘{0:>25}’.format(s) ==> ’ The sword of truth’
‘{0:<25}’.format(s) ==> ‘The sword of truth ’
‘{0:^25}’.format(s) ==> ’ The sword of truth ’
‘{0:-^25}’.format(s) ==> ‘—The sword of truth—-’
‘{0:#^25}’.format(s) ==> ‘###The sword of truth####’
‘{0:.<25}’.format(s) ==> ‘The sword of truth…….’
注意下面两种情况:
‘{0:.25}’.format(s) ===》’The sword of truth’
‘{0:.5}’.format(s) ===》’The s’
这里的句点不是填充符号,因为上面说过,fill必须和align一起出现,所以这里的句点表示的是最大宽度:
最小宽度为m 最大宽度为n 实际宽度为w
1) m、n>w 按最小宽度填充字符
‘{0:^5.6}’.format(‘123’) ==> ‘*123
‘{0:^6.5}’.format(‘123’) ==> ‘*123*
2)w>m、n截断
w>m>n ==> ‘{0:^6.5}’.format(‘1232345’) ==> ‘12323
w>n>m ==> ‘{0:*^5.6}’.format(‘1232345’) ==> ‘123234’
3)m>w>n
‘{0:^6.4}’.format(‘12325’) ==> ‘*1232
4)n>w>m
‘{0:*^4.6}’.format(‘12325’) ==> ‘12325’
5)单个
‘{0:*^4}’.format(‘12325’) ===> ‘12325’
‘{0:^6}’.format(‘12325’) ===>’12325
‘{0:*^.4}’.format(‘12325’)===>’1232’
‘{0:*^.6}’.format(‘12325’)===> ‘12325’

(2)sign对于数字类型有效:+ -能在正数前面加上一个+,这个只需要记住他的位置就好了:[[fill]align][sign][#][0][width][,][.precision]
‘{0:#<+20.6f}’.format(12325.343) ==>’+12325.343000#######’
‘{0:b} {0:o} {0:x} {0:X}’.format(1461287) ==>’101100100110000100111 5446047 164c27 164C27’
注意:他们参数只能是数字不能使字符串,这里的b、o、x分别是数字的二进制、八进制、16进制、d为10进制是默认情况可以不写。
在宽度后面可以加上一个逗号用于对整数分组
‘{0:,}’.format(1461287) ==> ‘1,461,287’
(3)对于浮点数的格式规约在结尾处有点差别,第一在可选最小宽度后面可以通过一个句点后跟一个整数指定保留小数的位数(包括小数点),也可以早结尾处添加一个类型符号:e表示使用指数形式,E是表示使用E指数形式,f表示使用标准的浮点形式,g表示通常格式,%会使数据扩大100倍后面加上%

“{0:-<10.6}”.format(math.pi)==》’3.14159—’
“{0:-<.5}”.format(math.pi)==》’3.1416’
“{0:-<.5e}”.format(math.pi*100) ==>’3.14159e+02’
“{0:%}”.format(math.pi)==》’314.159265%’

(3)关于复数

“{0.real:.3f}{0.imag:+.3f}j”.format(4.2344+5.3445j) ==> ‘4.234+5.345j’
“{0.real:.3f}{0.imag:-.3f}j”.format(4.2344+5.3445j) ==> ‘4.234-5.345j’
前面的+-可以不写让他自己去判断:
“{0.real:.3f}{0.imag:.3f}j”.format(4.2344+5.3445j) ==> ‘4.234+5.345j’
“{0.real:.3f}{0.imag:.3f}j”.format(4.2344+5.3445j) ==> ‘4.234-5.345j’

python格式化输出函数之format相关推荐

  1. python 格式化输出%和format

    1 %用法 1.1整数的输出 %o -- oct 八进制 %d -- dec 十进制 %x -- hex 十六进制 print('%o' % 20) #24 print('%d' % 20) #20 ...

  2. Python格式化输出之format

    format用法 相对基本格式化输出采用'%'的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号'{}'作为特殊字符代替'%' 使用方法由两种:b ...

  3. python格式化输出以及format()函数

    1.格式化输出 # 根据我们用户的需求,在指定的位置输出内容 """ %s 格式化输出字符串 str %d 格式化输出有符号的整数 %f 格式化输出浮点数 "& ...

  4. python格式化输出之format用法

    这篇博客总结不错 https://www.cnblogs.com/lovejh/p/9201219.html

  5. Python中format_map与format字符串格式化的区别

    在Python3中使用format和format_map方法都可以进行字符串格式化,但format是一种所有情况都能使用的格式化方法,format_map仅使用于字符串格式中可变数据参数来源于字典等映 ...

  6. python基础语法手册format-python的格式化输出(format,%)实例详解

    皇城PK Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问 ...

  7. python输出格式化及函数format

    返回博客列表 原 python输出格式化及函数format Dyllian 发布时间: 2013/05/28 10:31 阅读: 29711 收藏: 7 点赞: 1 评论: 2 总结了一些简单基本的输 ...

  8. Python 3.x 格式化输出字符串 % format 笔记

    python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记 %c字符及其ASCII码 %s字符串 %d有符号整数(十进制) %u无符号整数(十 ...

  9. Python中字符串格式化:%和format

    Python2.6推出了[str.format()]方法,和原有的%格式化方式有小小的区别.那个方法更好? 下面的方法有同样的输出,它们的区别是什么? #!/usr/bin/pythonsub1 = ...

  10. Python格式化输出(format和%)

    Python格式化输出(format和%) 平时在打印结果的时候,直接就使用print,但多次使用print会导致界面看起来很乱.python提供两种格式化输出的方法--format和%,本文会介绍两 ...

最新文章

  1. Deepin 下安装 Docker
  2. arcims安装配置教程
  3. C/C++ 中指针和引用的区别
  4. 如何使用SAP UI5 SDK网站查询指定控件的属性如何使用
  5. Codeforces Round #698 (Div. 2)
  6. JS之四舍五入Fixed
  7. linux cent os7,Cent OS 7系统目录结构
  8. C++控制台输出中文时乱码的解决方案
  9. 【电路仿真】基于matlab GUI Simulink钟摆自由控制【含Matlab源码 991期】
  10. nmap扫描服务器端口不稳定,nmap端口扫描问题
  11. 矩阵的矩阵指数函数_精通R编程:使用包,创建对象和基本矩阵函数
  12. 香蕉树上第一根芭蕉——关于C语言中链表(动态链表静态链表)使用说明
  13. 全局返回json数据简繁体字转换(返回数据里的中文全改成繁体字)
  14. inflate方法的用法
  15. Linux远程管理常用命令(超全超详细)【持续更新】
  16. 《大象:thinking in uml 》(第二版) 11章 系统分析 3-4节 用例实现、软件架构和框架
  17. LaTex 中 Author biography里面插入作者照片
  18. SAP CRM BOL entity deletion - root node and sub node
  19. 思杰pvs服务器压力无法最大化,Windows Server 2008 Hyper-V上运行思杰XenDesktop之最优范例...
  20. Centos7下下载git

热门文章

  1. android 6.0小游戏,宝宝汽车小游戏
  2. 基于ssm框架的绩效管理系统
  3. 市场营销策划书大纲怎么写
  4. 樊登读书赋能读后感_樊登读书会读后感01012019
  5. 性能测试——jmeter性能测试——重点—核心——线程组、Ramp-Up Period、Loop Count 次采样...
  6. 年度最高奖金【双百万】:2021年全国人工智能大赛开赛啦
  7. 模拟人生4修改服务器,模拟人生4 全秘籍、作弊码一览 模拟人生4修改方法汇总...
  8. IAU SOFA 软件包介绍
  9. 2020 东京奥运会直播/回放观看途径
  10. 数据耦合的代码例子c语言,代码耦合的处理