下文介绍的Format()方式是比较新的函数, 但是目前大多数的 Python 代码仍然使用 % 操作符,所以两种方式都要掌握。Python官网说%这种旧式的格式化最终会从该语言中移除,所以 应该更多的使用 Format()方式。 一、百分号 语法格式: (其中【】内的字段为可选项,其它为必选项) % [(name)] [flags] [width] .[precision] typecode (name) 可选,用于选择指定的key flags 可选,可供选择的值有: Flags 正数前加正号,负数前加负号 正数前无符号,负数前加负号 正数前加空格,负数前加负号 正数前无符号,负数前加负号 用0填充空白处 width 可选,占有宽度 .precision 可选,小数点后保留的位数 typecode 必选,要替换的值类型,可供选择的值有: typecode 获取传入对象的__str__方法的返回值,并将其格式化到指定位置 将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置 将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e) 将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E) 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位) 将整数转换成 八 进制表示,并将其格式化到指定位置 自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;) 作用同上,只是如果是科学计数则是E 整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111字符,并将字符添加到指定位置 获取传入对象的__repr__方法的返回值,并将其格式化到指定位置 当字符串中存在格式化标志时,需要用 %%表示一个百分号 注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式 百分号方式格式化示例: >>> print("a = a%+d" %2) a = a+2 >>> print("a = a%+d" %-2) a = a-2 >>>> print("a = a%-d" %2) a = a2 >>> print("a = a%-d" %-2) a = a-2 >>> print("a = a% d" %2) a = a 2 >>> print("a = a% d" %-2) a = a-2 >>> print("a = a%0d" %2) a = a2 >>> print("a = a%0d" %-2) a = a-2 >>>**大括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换** >>> print("i am {}, age {}, {}".format("yolanda", 18, 'hello')) i am yolanda, age 18, hello >>> print("i am {}, age {}, {}".format(*["yolanda", 18, 'hello'])) i am yolanda, age 18, hello >>> print("i am {}, age {}, {}".format(*["yolanda", 18])) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: tuple index out of range >>>**在大括号中的数字用于指向传入对象在 format() 中的位置** >>> print("i am {0}, age {1}, name {0}".format(*["yolanda", 18])) i am yolanda, age 18, name yolanda >>> print("i am {0}, age {1}, name {0}".format("yolanda", 18)) i am yolanda, age 18, name yolanda >>> print("i am {0}, age {1}, name {0}".format(["yolanda", 18])) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: tuple index out of range >>>**如果在 format() 中使用了关键字参数, 那么它们的值会指向使用该名字的参数** >>> print("i am {name}, age {age}, name {name}".format(name="yolanda", age=18)) i am yolanda, age 18, name yolanda >>> print("i am {name}, age {age}, name {name}".format(*{"name": "yolanda", "age":18})) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'name' >>> print("i am {name}, age {age}, name {name}".format(**{"name": "yolanda", "age":18})) i am yolanda, age 18, name yolanda >>> print("i am {0[0]}, age {0[1]}, name {0[2]}; you are {1[0]}, age {1[1]}, name {1[2]}".format([1,2,3], [11,22,33])) i am 1, age 2, name 3; you are 11, age 22, name 33 >>> print("i am {name:s}, age {age:d}".format({"name":"yolanda", age:18})) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'age' is not defined >>> print("i am {name:s}, age {age:d}".format({"name":"yolanda", "age":18})) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'name' >>> print("i am {name:s}, age {age:d}".format(**{"name":"yolanda", "age":18})) i am yolanda, age 18 >>> print("number: {0:b},{0:o},{0:d},{0:x},{0:X},{0:%}".format(10,10,10,10,10,18.8888,2)) number: 1010,12,10,a,A,1000.000000% >>> print("number: {0:b},{0:o},{0:d},{0:x},{0:X},{0:%}".format(8)) number: 1000,10,8,8,8,800.000000% >>> print("number: {num:b},{num:o},{num:d},{num:x},{num:X},{num:%}".format(num=6)) number: 110,6,6,6,6,600.000000% >>> print ("Name:%10s Age:%8d Height:%8.2f"%("yolanda",25,1.83)) Name:   yolanda Age:      25 Height:    1.83 >>> print ("Name:%-10s Age:%-8d Height:%-8.2f"%("yolanda",25,1.83)) Name:yolanda    Age:25       Height:1.83 >>> print ("Name:%-10s Age:%08d Height:%08.2f"%("yolanda",25,1.83)) Name:yolanda    Age:00000025 Height:00001.83 >#使用format单独对数据进行格式化 >>> format(0.0015,'.2e') '1.50e-03' >>> a = 0.035 >>> b = format(a, '.2%') '3.50%' >#其它的格式使用方法类似,不再一一演示

广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员