python的format方法可谓相当强大,它可以接受不限个参数。。。

1.通过位置来格式化字符串,注意format传入的参数的位置要正确{0}对应第1个参数,{1}对应第2个参数...

 >>> '{0},{1}'.format('kzc',18)
'kzc,18'
>>> '{},{}'.format('kzc',18)
'kzc,18'
>>> '{1},{0},{1}'.format('kzc',18)
'18,kzc,18'
>>>

位置映射实现

2.通过关键字参数,这样就可以不关心顺序问题,通过关键字传入值

 >>> '{name},{age}'.format(age=18,name='kzc')
'kzc,18'

关键字实现

3.上面的通过关键字实现很像字典的key和value形式,那么能不能通过字典来格式化字符串呢?

 dic = {'ss':'zhang','dd':20}
name = "i am {ss} ,age {dd}" name.format(ss=dic['ss'],dd=dic['dd'])

通过字典传递参数

 dic = {'ss':'zhang','dd':20}
name = "i am {ss} ,age {dd}"
name.format(**dic)

动态参数传递

4.既然format可以接受字典参数,列表也当然可以了。你的想法强大python就有多强大。。。

li=['awill',22]
name = "i am {0} , age {1}"
name.format(li[0],li[1])

通过列表的索引实现

 li=['awill',22]
name = "i am {0} , age {1}"
name.format(*li)

列表的动态参数

 li=['awill',22]
name = "i am {0[0]} , age {0[1]}"
name.format(li)

列表变种形式

5.格式限定符

它有着丰富的的“格式限定符”(语法是{}中带:号)
5.1 填充与对齐:

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

 >>> '{:>8}'.format('')
''
>>> '{:0<15}'.format('awill')
'awill0000000000'
>>> '{:*^20}'.format('awill')
'*******awill********'

填充与对齐

5.2 精度与类型f:

精度常跟类型f一起使用

如下:2表示长度为2的精度,f表示float类型。

 >>> '{:.2f}'.format(321.33545)#四舍五入
'321.34'

float精度

5.3 其他类型

格式化指示符可以包含一个展示类型来控制格式。

展示类型有很多:
  'b' - 二进制。将数字以2为基数进行输出。
  'c' - 字符。在打印之前将整数转换成对应的Unicode字符串。
  'd' - 十进制整数。将数字以10为基数进行输出。
  'o' - 八进制。将数字以8为基数进行输出。
  'x' - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
  'e' - 幂符号。用科学计数法打印数字。用'e'表示幂。
  'g' - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
  'n' - 数字。当值为整数时和'd'相同,值为浮点数时和'g'相同。不同的是它会根据区域设置插入数字分隔符。
  '%' - 百分数。将数值乘以100然后以fixed-point('f')格式打印,值后面会有一个百分号。

 >>> '{:b}'.format(15)
''
>>> type('{:b}'.format(15))
<class 'str'>
>>> '{:d}'.format(15)
''
>>> '{:c}'.format(15)
'\x0f'
>>> '{:c}'.format(65)
'A'
>>> '{:o}'.format(15)
''
>>> '{:x}'.format(15)
'f'
>>> '{:e}'.format(15)
'1.500000e+01'
>>> '{:g}'.format(15)
''
>>> type('{:g}'.format(15))
<class 'str'>
>>> '{:g}'.format(15000000000000)
'1.5e+13'
>>> '{:n}'.format(15000000000000)
''
>>> '{:n}'.format(15.00234342)
'15.0023'
>>> '{:g}'.format(15.00234342)
'15.0023'
>>> '{:%}'.format(0.234342)
'23.434200%'

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

>>> '{:,}'.format(1234567890)
'1,234,567,890'

6.通过对象属性

 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)

7.一些其他用法

 >>> print('{0:*>20}'.format('awill'))
***************awill
>>> print('{0:4.2f}'.format(1.1415926))
1.14
>>> print(format(1.1415926,'<10.2f'))
1.14
>>> print('{0:<10},{1:0<15}'.format('awill',1.1415926))
awill ,1.1415926000000 #输入形式的控制format
a = int(raw_input('a:'))
b = int(raw_input('b:'))
print('%*.*f' % (a, b, 1.1415926))#a对应第一个*,代表输出长度;b代表第二个*,代表输出小数位数
print( '%6.3f' % (1.1415926))#输出长度为6,小数位数是3(末位四舍五入) print({array[2]}'.format(array=range(10)))
print({attr.__class__}'.format(attr=2.4))
print ({digit:*^ 10.5f}'.format(digit=1.0/3))

杂技表演

8.参考:http://www.cnblogs.com/wupeiqi/articles/5484747.html

字符串格式化format很牛B的更多相关文章

  1. Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

    Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助 目录 Pychar ...

  2. Python: 字符串格式化format()函数的使用

    python从2.6开始支持format,新的更加容易读懂的字符串格式化方法,从原来的% 模式变成新的可读性更强的 花括号声明{}.用于渲染前的参数引用声明, 花括号里可以用数字代表引用参数的序号, ...

  3. Python3之字符串格式化format函数详解(上)

    概述 在Python3中,字符串格式化操作通过format()方法或者f’string’实现.而相比于老版的字符串格式化方式,format()方法拥有更多的功能,操作起来更加方便,可读性也更强.该函数 ...

  4. python3字符串格式化format()函数的简单用法

    format()函数 """ 测试 format()函数 """ def testFormat(): # format()函数中有几个元素, ...

  5. 字符串格式化format方法

    通过位置参数传参 print('{}, {}'.format('KeithTt', 18)) # KeithTt, 18 位置参数可以通过索引调用 print('{1}, {0}'.format('K ...

  6. python 字符串格式化—format

    Python2.6 开始,新增了一种格式化字符串的函数 str.format().使用起来简单方便,不会遇到使用%时候格式的选择问题. 按照参数默认顺序 >>> "yesd ...

  7. python之字符串格式化(format)

    用法: 它通过{}和:来代替传统%方式 1.使用位置参数 要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表 ...

  8. 字符串格式化format使用

    顺序传参 '{}....{}'.format(value1, value2) 索引传参 '{0}....{1}'.format(value1, value2) 关键字传参 '{k1}....{k2}' ...

  9. python 字符串格式化format

    通过{}和:来代替传统%方式   1.位置参数 位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表 >>> li ...

随机推荐

  1. Java基础之入门介绍

    基础知识 1.JVM.JRE和JDK的区别:     JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性.                   java ...

  2. CF739B

    深搜的过程中保存路径,二分路径中满足要求的区段.不必将每个节点的ans加1,只需将合法区段末尾加1同时将开头减1来表示并保存在一个“前缀”数组中即可.最后再dfs一次累加得到答案. #include ...

  3. WebService学习之旅(五)基于Apache Axis2发布第一个WebService

    上篇博文介绍了如何將axis2 webservice引擎安装到Web容器中,本节开始介绍如何基于apache axis2发布第一个简单的WebService. 一.WebService服务端发布步骤 ...

  4. 模拟一次CSRF(跨站请求伪造)例子,适合新手

    GET请求伪造 有一个论坛网站,网站有一个可以关注用户的接口,但是必须登录的用户才可以关注其他用户. 这个网站的网站是www.a.com 有一天有一个程序员想提高自己的知名度,决定利用CSRF让大家关 ...

  5. 项目经验——jboss 配置数据库连接池

    数据库的连接和关闭是非常消耗系统资源的,在多层结构的应用环境中,这种资源消耗又直接的反映到系统性能上来.在项目实际应用中,最常用的解决方案便是建立数据库连接池. 一.数据库连接池基本原理 当程序启动时 ...

  6. leetcode 127 单词接龙

    给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度.转换需遵循如下规则: 每次转换只能改变一个字母. 转换过程中的中 ...

  7. 在web应用中使用日志

    Log4J是Jakarta下的一个开源代码的子项目,用Log4J,我们可以使用定制的格式,把调试信息和日志信息输出到一个或多个需要的地方. 在Web应用中一般使用一个专门的Servlet来完成Log4 ...

  8. 多源最短路径floyd

    #include<iostream> #define INF 105 using namespace std; int main() { ][],mark,x,y,g; while(cin ...

  9. crop层

    A是要进行剪裁的blob,B是参考,C是由A剪裁出来的输出. 模式1和模式2不同在于offset,模式1中每个dimension可以不同,模式2中用一个值表示了所有dimension的值. axis表 ...

  10. 【实用工具】Teleport Pro爬取整个网站镜像到本地

    1. 使用Teleport Pro可以完全或部分下载一个网站上的内容,在硬盘上创建一个与原网站完全相同的镜象,使用户能够离线浏览 Teleport Pro的安装以及基本使用 在菜单栏Project下得 ...