Python是完全面向对象的语言, 任何东西都是对象;
字符串的参数使用{NUM}进行表示, 0表示第一个参数, 1表示第二个参数, 以后顺次递加;
使用":", 指定代表元素需要的操作, 如":.3"小数点三位, ":8"占8个字符空间等;
数字(0, 1, ...)即代表format()里面的元素, 所以可以使用"."调用元素的方法;
格式化指示符可以包含一个展示类型来控制格式。例如,浮点数可以被格式化为一般格式或用幂来表示。
- >>> '{0:g}'.format(3.75)
- '3.75'
- >>> '{0:e}'.format(3.75)
- '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
代码示例
- # -*- coding: utf-8 -*-
- #====================
- #File: abop.py
- #Author: Wendy
- #Date: 2013-12-03
- #====================
- #eclipse pydev, python3.3
- age = 25
- name = 'Caroline'
- print('{0} is {1} years old. '.format(name, age)) #输出参数
- print('{0} is a girl. '.format(name))
- print('{0:.3} is a decimal. '.format(1/3)) #小数点后三位
- print('{0:_^11} is a 11 length. '.format(name)) #使用_补齐空位
- print('{first} is as {second}. '.format(first=name, second='Wendy')) #别名替换
- print('My name is {0.name}'.format(open('out.txt', 'w'))) #调用方法
- print('My name is {0:8}.'.format('Fred')) #指定宽度
输出:
- Caroline is 25 years old.
- Caroline is a girl.
- 0.333 is a decimal.
- _Caroline__ is a 11 length.
- Caroline is as Wendy.
- My name is out.txt
- 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(75.6564, '.2f')
- '75.66'
你也可以使用字段的组合来读取属性或者字典的key值。
- import sys
- 'Platform: {0.platform} Python version: {0.version}'.format(sys)
- -> '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 分别是二进制、十进制、八进制、十六进制。