【转】Python 函数—format函数

2 篇文章 0 订阅
1 篇文章 0 订阅

Python是完全面向对象的语言, 任何东西都是对象;

字符串的参数使用{NUM}进行表示, 0表示第一个参数1表示第二个参数, 以后顺次递加;

使用":", 指定代表元素需要操作, 如":.3"小数点三位, ":8"占8个字符空间等;

数字(0, 1, ...)即代表format()里面的元素, 所以可以使用"."调用元素的方法;

 

 格式化指示符可以包含一个展示类型来控制格式。例如,浮点数可以被格式化为一般格式或用幂来表示。

[python]  view plain  copy
  1. >>> '{0:g}'.format(3.75)  
  2.  '3.75'  
  3. >>> '{0:e}'.format(3.75)  
  4.  '3.750000e+00'  


展示类型有很多。2.6的文档里有完整的列表。这里列出一些示例。

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

 print '{:b}'.format(18) #二进制 10010
 print '{:d}'.format(18) #十进制 18
 print '{:o}'.format(18) #八进制 22
 print '{:x}'.format(18) #十六进制12

代码示例

[python]  view plain  copy
  1. # -*- coding: utf-8 -*-    
  2.     
  3. #====================    
  4. #File: abop.py    
  5. #Author: Wendy    
  6. #Date: 2013-12-03    
  7. #====================    
  8.     
  9. #eclipse pydev, python3.3    
  10.     
  11. age = 25    
  12. name = 'Caroline'    
  13.     
  14. print('{0} is {1} years old. '.format(name, age)) #输出参数    
  15. print('{0} is a girl. '.format(name))    
  16. print('{0:.3} is a decimal. '.format(1/3)) #小数点后三位    
  17. print('{0:_^11} is a 11 length. '.format(name)) #使用_补齐空位    
  18. print('{first} is as {second}. '.format(first=name, second='Wendy')) #别名替换    
  19. print('My name is {0.name}'.format(open('out.txt''w'))) #调用方法    
  20. print('My name is {0:8}.'.format('Fred')) #指定宽度    

输出:

[python]  view plain  copy
  1. Caroline is 25 years old.     
  2. Caroline is a girl.     
  3. 0.333 is a decimal.     
  4. _Caroline__ is a 11 length.     
  5. Caroline is as Wendy.     
  6. My name is out.txt    
  7. My name is Fred    .    



对齐与填充

数字格式输出描述
5{:0>2}05数字补零 (填充左边, 宽度为2)
5{:x<4}5xxx数字补x (填充右边, 宽度为4)
10{:x^4}x10x数字补x (填充右边, 宽度为4)
13{:10}或{:<10}13        左对齐 (默认, 宽度为10)
13{:>10}        13右对齐 (宽度为10)
13{:^10}    13中间对齐 (宽度为10

特别是爬虫最后对应输出的时候 用到浅蓝色填充的部


 #通过映射 list
 a_list = ['chuhao',20,'china']
 print'my name is {0[0]},from {0[2]},age is {0[1]}'.format(a_list))
 #my name is chuhao,from china,age is 20
 
 #通过映射 dict
 b_dict = {'name':'chuhao','age':20,'province':'shanxi'}
 print'my name is {name}, age is {age},from {province}'.format(**b_dict))
 #my name is chuhao, age is 20,from shanxi

 
 #精度与类型f
 #保留两位小数
 print'{:.2f}'.format(321.33345))
 #321.33
 
 #用来做金额的千位分隔符
 print'{:,}'.format(1234567890))
 #1,234,567,890
 
还有一个内置的format()方法可以用来格式化一个值。它会调用类型的__format__()方法,并将格式化指示符作为参数传进去。
[python]  view plain  copy
  1. >>> format(75.6564'.2f')  
  2.  '75.66'  

你也可以使用字段的组合来读取属性或者字典的key值。

[python]  view plain  copy
  1. import sys  
  2. 'Platform: {0.platform} Python version: {0.version}'.format(sys)   
  3. -> 'Platform: darwin Python version: 2.6a1+ (trunk:61261M, Mar 5 2008, 20:29:41)  \n[GCC 4.0.1 (Apple Computer, Inc. build 5367)]'  
数字格式化

下表展示了 str.format() 格式化数字的多种方法:

>>> print("{:.2f}".format(3.1415926));
3.14
数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
-1{:+.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:0>2}05数字补零 (填充左边, 宽度为2)
5{:0<4}5000数字补0 (填充右边, 宽度为4)
10{:0<4d}1000数字补0 (填充右边, 宽度为4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指数记法
13{:10}13        左对齐 (默认, 宽度为10)
13{:<10}13        左对齐 (宽度为10)
13{:^10}    13中间对齐 (宽度为10)
11
'{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)
1011
11
13
b
0xb
0XB
进制

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

+ 表示在正数前显示 +,负数前显示 -  (空格)表示在正数前加空格

b、d、o、x 分别是二进制、十进制、八进制、十六进制。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值