码迷,mamicode.com
首页 > 其他好文 > 详细

5、模块详解之一

时间:2016-06-11 00:45:18      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

1、格式化输出(1) -- % :

typecode    必选
s,#获取传入对象的__str__方法的返回值,并将其格式化到指定位置
r,#获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
c,#整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
o,#将整数转换成 八  进制表示,并将其格式化到指定位置
x,#将整数转换成十六进制表示,并将其格式化到指定位置
d,#将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
e,#将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
E,#将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
f,# 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
F,#同上
g,#自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
G,#自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
%,#当字符串中存在格式化标志时,需要用 %%表示一个百分号

在print中可以这样使用,举例如下:

print("%s"%"xiaoming")
xiaoming
print("%d"%1324)
1324

如果在print中只用了占位符,并且还要打印“%”的话,需要这样做:

print ("%s %%"%‘xiaoming‘)
xiaomin %

如果要将字典的值输出的话,可以用下面的来做:

print(‘%(name)s  %(score)06.1f‘ %{‘score‘:9.5, ‘name‘:‘newsim‘})    #06.1f 的意思是: 0的意思是填充位,6的意思是这个浮点数一共六位(加小数点),1的意思是保留一位小数,总体来说就是9.5保留一位小数,默认保留六位,不够六位从前面添加0
newsim  0009.5

 

2、格式化输出(2) --format

[[fill]align][sign][#][0][width][,][.precision][type]

fill #【可选】空白处填充的字符
align#【可选】对齐方式(需配合width使用)
<    #内容左对齐
>    #内容右对齐(默认)
=   #内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
^    #内容居中
sign #【可选】有无符号数字
+    #正号加正,负号加负;
-    #正号不变,负号加负;
空格  #正号空格,负号加负;
#    #【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
,   #【可选】为数字添加分隔符,如:1,000,000
width                 #【可选】格式化位所占宽度
.precision         #【可选】小数位保留精度
type               #【可选】格式化类型
传入” 字符串类型 “的参数
s,格式化字符串类型数据
空白,未指定类型,则默认是None,同s
传入“ 整数类型 ”的参数
b,#将10进制整数自动转换成2进制表示然后格式化
c,#将10进制整数自动转换为其对应的unicode字符
d,#十进制整数
o,#将10进制整数自动转换成8进制表示然后格式化;
x,#将10进制整数自动转换成16进制表示然后格式化(小写x)
X,#将10进制整数自动转换成16进制表示然后格式化(大写X)
传入“ 浮点型或小数类型 ”的参数
e,#转换为科学计数法(小写e)表示,然后格式化;
E,#转换为科学计数法(大写E)表示,然后格式化;
f,#转换为浮点型(默认小数点后保留6位)表示,然后格式化;
F,#转换为浮点型(默认小数点后保留6位)表示,然后格式化;
g,#自动在e和f中切换
G,#自动在E和F中切换
%,#显示百分比(默认显示小数点后6位)

下面介绍几种常用的模式:

模式一:普通占位符,这个和print的是一样的,但是写法有点不同

print("{:s}{:s}".format(‘xiaoming‘,‘xiaohong‘))
xiaomingxiaohong
print("{:d},{:s}".format(12345,‘xiaohong‘))
12345,xiaohong
print( "{:06.2f}".format(0.234253))
000.23

  

模式二:名称占位符,和print也是一样的

print("{name} {age}".format(name=‘alex‘,age=23))
alex 23
也可以这样写,如下但是这样指定了值的类型
print("{name:s} {age:d}".format(name=‘alex‘,age=23))
alex 23

模式三:打印百分数,直接在占位符的后面加个%即可

print("{:.2%}".format(0.234253) )
23.43%

模式四:自动填充功能

"{:*^20s}".format(‘alex‘)                       #居中显示alex,其余 用* 填充
"{:*<20s}".format(‘alex‘)                       #右对齐显示alex,其余 用* 填充
"{:*>20s}".format(‘alex‘)                       #左对齐显示alex,其余 用* 填充

print("{:*^20s}".format(‘alex‘)  )
********alex********
print("{:*>20s}".format(‘alex‘)  )
****************alex
print("{:*<20s}".format(‘alex‘)  )
alex****************

模式6:占位符用数字,注意这里数字可以重复但必须从0开始

print("{0} {0} {1}".format(‘xiaoming‘,‘xiaohong‘))    #0代表format中第一个,1代表第二个,一次类推
xiaoming xiaoming xiaohong

模式7:只有大括号

print("{} {} {}".format(‘zhangshan‘,‘lisi‘,‘wangwu‘))     #如果只有大括号,则从前往后依次匹配format中的内容
zhangshan lisi wangwu

 

附1:进度条(yum样式),需要在终端运行才会显示,不知道什么鬼

start = 0
total = 20                                               #需要接受的数据的总数   
while start < int(total):
    start += 1                                          #1可以替换为每次接收数据的大小
    i = 70                                              #需要打印的#的总数
    c = int((start / int(total)) * 70)                  #当前需要打印的#的数量
    p = float((start / int(total)))                     #当前传输完毕的数据百分比
    j = "#" * c
    sys.stdout.write("[{: <70s}]{:.0%}\r".format(j,p))
    time.sleep(0.1)

 

附2:练习题

tpl = "i am {}, age {}, {}".format("seven", 18, ‘alex‘)
tpl = "i am {}, age {}, {}".format(*["seven", 18, ‘alex‘])
tpl = "i am {0}, age {1}, really {0}".format("seven", 18)
tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18])
tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)
tpl = "i am {:s}, age {:d}".format(*["seven", 18])
tpl = "i am {name:s}, age {age:d}".format(name="seven", age=18)
tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})
tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)

  

 

5、模块详解之一

标签:

原文地址:http://www.cnblogs.com/mayesheng/p/5569833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!