Chinaunix首页 | 论坛 | 博客
  • 博客访问: 637303
  • 博文数量: 244
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-27 09:53
个人简介

记录学习,记录成长

文章分类

全部博文(244)

我的朋友

分类: Python/Ruby

2015-07-05 16:29:25

格式化字符串函数format格式:
string.format()

几个用法:

1.通过位置

代码:

  1. 代码:
  2. >>> '{0},{1}'.format('I','love','you')
  3. 'I,love'
  4. >>> '{0},love,{1}'.format('I','you')
  5. 'I,love,you'
  6. >>> '{0} love {1}'.format('I','you')
  7. 'I love you'
  8. >>> '{0},love,{1} {1}'.format('I','you')
  9. 'I,love,you you'

代码:

  1. >>> '{1} love {0}'.format('I','you')
  2. 'you love I'

代码:

  1. >>> '{} love {}'.format('I','you')
  2. 'I love you'

字符串的format函数可以接受不限个参数,位置顺序可以不固定,也可以不用参数或者多次使用,但是2.6版本不能用{},2.7版本可以用

2.通过关键字参数

代码:

  1. >>> '{a} love {b}'.format(a='I',b='you')
  2. 'I love you'
  3. >>> '{name} is {age}'.format(name='lw',age=22)
  4. 'lw is 22'
3.通过对象属性(还木有看到对象,先留着以后回来再看)

1
2
3
4
5
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)
?
1
2
In [2]: str(Person('kzc',18))
Out[2]: 'This guy is kzc,is 18 old'

4.通过下标

代码:

  1. >>> p=['I','You']
  2. >>> '{0[0]} love {0[1]}'.format(p)
  3. 'I love You'


补充:
list和tuple可以通过“打散”成普通参数给format函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。

格式限定符

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

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


代码:

  1. >>> '{:^6}'.format('123')
  2. ' 123 '
  3. >>> '{:*>6}'.format('123')
  4. '***123'
  5. >>> '{:*<6}'.format('123')
  6. '123***'
  7. >>> '{:>6}'.format('123')
  8. ' 123'
2.精度与类型f(二者常一起使用)
注意,这时候不再是字符串类型
其中  .3表示长度为3的精度,f表示float类型

代码:

  1. >>> '{:.3f}'.format('123.456789')

  2. Traceback (most recent call last):
  3.   File "<pyshell#36>", line 1, in <module>
  4.     '{:.3f}'.format('123.456789')
  5. ValueError: Unknown format code 'f' for object of type 'str'
  6. >>> '{:.3f}'.format(123.456789)
  7. '123.457'
3.进制类型
其中,b、d、o、x分别是二进制、十进制、八进制、十六进制,这时候因为是进制类型,所以参数还是不能有  ‘  ’ 号

代码:

  1. >>> '{:b}'.format(33)
  2. '100001'
  3. >>> '{:d}'.format(33)
  4. '33'
  5. >>> '{:o}'.format(33)
  6. '41'
  7. >>> '{:x}'.format(33)
  8. '21'
  9. >>>
  10. KeyboardInterrupt
  11. >>> '{:b}'.format('33')

  12. Traceback (most recent call last):
  13.   File "<pyshell#45>", line 1, in <module>
  14.     '{:b}'.format('33')
  15. ValueError: Unknown format code 'b' for object of type 'str'
另外还可以用  ,号还能用来做比如金额的千位分隔符

代码:

  1. >>> '{:,}'.format(123456789)
  2. '123,456,789'





阅读(8332) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~