str.format格式化用法(通过{}来替代%)

# -*- coding: utf-8 -*-
#python 27
#xiaodeng
#str.format格式化用法(通过{}来替代%)
'''
>>> help(format)
Help on built-in function format in module __builtin__:

format(...)
    format(value[, format_spec]) -> string
    
    Returns value.__format__(format_spec)
    format_spec defaults to ""
'''



#1、通过位置:
#字符串的format函数可以接受不限个参数,位置可以不按顺序。
print 'name:{0},age:{1}'.format('xiaodeng',28)#name:xiaodeng,age:28
print '{},{}'.format('xiaodeng',28)#xiaodeng,28

#print '{},{},{}'.format('xiaodeng',28)
'''
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\新浪API\test.py", line 20, in <module>
    print '{},{},{}'.format('xiaodeng',28)
IndexError: tuple index out of range
'''
#修改之:
print '{1},{1},{0}'.format('xiaodeng',28)#28,28,xiaodeng



#2、通过关键字参数:
print '{name},{age}'.format(age=20,name='xiaodeng')#xiaodeng,20



#3、通过对象属性:
class Person():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __str__(self):
        return 'my name is {self.name},age is {self.age} years old'.format(self=self)

print Person('xiaodeng',28)#my name is xiaodeng,age is 28 old




#4、通过下标
list=['xiaodeng',28]
print '{0[0]},{0[1]}'.format(list)#xiaodeng,28;这里的0是默认的???



#5、填充与对齐
print '{:>8}'.format('125')#>右对齐,后面带宽度,<表示左对齐,^表示居中对齐。
print '{:a>8}'.format('125')#默认空格填充,这里为a字母填充
'''
>>>
     125
aaaaa125
>>> 
'''


#6、精度和类型f
print '{:.2f}'.format(321.123)#321.12;其中.2表示长度为2的精度,f表示float类型



#7、其他类型:
#要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。
print '{:b}'.format(17)#10001
print '{:d}'.format(17)#17
print  '{:o}'.format(17)#21
print  '{:x}'.format(17)#11
#用,号还能用来做金额的千位分隔符。
print '{:,}'.format(1234567890)#1,234,567,890


#8、指定宽度
print 'My name is {0:118}'.format('xiaodeng')#My name is xiaodeng

 

posted @ 2015-11-03 10:47  Xiao|Deng  阅读(2639)  评论(0编辑  收藏  举报