首页 > 编程语言 > 详细

python 格式化输出(% VS format)

时间:2019-10-31 11:15:28      阅读:85      评论:0      收藏:0      [点我收藏+]

提到Python中的格式化输出方法,一般来说有以下两种方式:

1)%

格式说明由%和格式字符组成,如%f,%s,%d,它的作用是将数据按照指定的格式输出。格式说明是由“%”字符开始的。

技术分享图片
 1 #1.输出字符串%s
 2 print(my name is %s % (xiaoming))
 3 
 4 #2.整型输出%d
 5 print(My sister is %s, Her age is %d,%(Lina,18))
 6 
 7 #3.输出浮点数
 8 print(Her height is %f m % (1.6500))
 9 
10 #4.保留2位小数
11 print(His height is %.2f m % (1.6500))
12 
13 #5.指定占位符宽度
14 print(name:%10s  age:%10d height:%5.2f % (Lina,18,1.6500))
15 
16 #6.指定占位符宽度(左对齐)
17 print(name:%-10s  age:%-10d  height:%-5.2f % (Lina,18,1.6500))
18 
19 #7.字符串截取
20 print(%.5s % (hello word))#截取前5个字符
21 
22 ‘‘‘
23 运行结果
24 my name is xiaoming
25 My sister is Lina, Her age is 18,
26 Her height is 1.650000 m
27 His height is 1.65 m
28 name:      Lina  age:        18 height: 1.65
29 name:Lina        age:18          height:1.65 
30 hello
31 
32 
33 ‘‘‘
View Code

 

2) format

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

基本用法

技术分享图片
 1 print({} {}.format(hello, world))  # 最基本的
 2 
 3 print({0} {1}.format(hello, world))  # 通过位置参数
 4 
 5 print({0} {1} {0}.format(hello, world))  # 单个参数多次输出
 6 
 7 """输出结果
 8 hello world
 9 hello world
10 hello world hello
11 """
View Code

 

关键词定位

技术分享图片
 1 # 通过关键词参数
 2 print(我的名字是{name},我今年{age}岁了。.format(name=Linda, age=18))
 3 
 4 # 与位置参数一样,单个参数也能多次输出
 5 print({name}说:"我的名字是{name},我今年{age}岁了。".format(name=linda, age=18))
 6 
 7 """输出结果
 8 我的名字是linda,我今年18岁了。
 9 linda说:"我的名字是Linda,我今年18岁了。"
10 """
View Code

 

可变参数

可传入list、dic类型

技术分享图片
 1 # 传入list
 2 data = [hello, world]
 3 print({0} {1}.format(*data))
 4 
 5 # 传入dict
 6 data = {name: 小明, age: 12}
 7 print(我的名字是{name},我今年{age}岁了。.format(**data))
 8 
 9 # 混用
10 data_1 = [hello, world]
11 data_2 = {name: 小明, age: 12}
12 print({0} {1} 我的名字是{name},我今年{age}岁了,{0}!.format(*data_1, **data_2))
13 
14 """输出结果
15 hello world
16 我的名字是小明,我今年12岁了。
17 hello world 我的名字是小明,我今年12岁了,hello!
18 """
View Code

 

 

固定宽度

format()可以指定输出宽度为多少,当字符串长度少于设定值的时候,默认用空格填充:

技术分享图片
 1 data = [{name: Mary, college: Tsinghua University},
 2         {name: Micheal, college: Harvard University},
 3         {name: James, college: Massachusetts Institute of Technology}]
 4 # 固定宽度输出
 5 for item in data:
 6     print({:10}{:40}.format(item[name], item[college]))
 7 
 8 """输出结果
 9 Mary      Tsinghua University                     
10 Micheal   Harvard University                      
11 James     Massachusetts Institute of Technology   
View Code

 

当然除了空格,我们也可以选择其他字符来填充,譬如我想打印一条分割线,便可以选择通过-来填充:

技术分享图片
 1 data = [{name: Mary, college: Tsinghua University},
 2         {name: Micheal, college: Harvard University},
 3         {name: James, college: Massachusetts Institute of Technology}]
 4 
 5 # 固定宽度输出
 6 for item in data:
 7     # 每输出一条记录之前打印一条分割线
 8     # 选择用其他字符来填充时需要指定对齐方式
 9     print({:-^60}.format(我是分割线))
10     print({:10}{:40}.format(item[name], item[college]))
11 
12 """输出结果
13 ---------------------------我是分割线----------------------------
14 Mary      Tsinghua University                     
15 ---------------------------我是分割线----------------------------
16 Micheal   Harvard University                      
17 ---------------------------我是分割线----------------------------
18 James     Massachusetts Institute of Technology   
19 """
View Code

 

对齐方式

format()支持左对齐,右对齐,居中,分别对应<>^,具体怎么使用我们看实例:

技术分享图片
 1 data = [{name: Mary, college: Tsinghua University},
 2         {name: Micheal, college: Harvard University},
 3         {name: James, college: Massachusetts Institute of Technology}]
 4 
 5 
 6 print({:-^50}.format(居中))
 7 for item in data:
 8     print({:^10}{:^40}.format(item[name], item[college]))
 9 
10 print({:-^50}.format(左对齐))
11 for item in data:
12     print({:<10}{:<40}.format(item[name], item[college]))
13 
14 print({:-^50}.format(右对齐))
15 for item in data:
16     print({:>10}{:>40}.format(item[name], item[college]))
17 
18 """输出结果
19 ------------------------居中------------------------
20    Mary             Tsinghua University           
21  Micheal             Harvard University           
22   James    Massachusetts Institute of Technology  
23 -----------------------左对齐------------------------
24 Mary      Tsinghua University                     
25 Micheal   Harvard University                      
26 James     Massachusetts Institute of Technology   
27 -----------------------右对齐------------------------
28       Mary                     Tsinghua University
29    Micheal                      Harvard University
30      James   Massachusetts Institute of Technology
31 """
View Code

 

数字格式化

常用的示例如下:

技术分享图片
 1 # 取小数点后两位
 2 num = 3.1415926
 3 print(小数点后两位:{:.2f}.format(num))
 4 
 5 # 带+/-输出
 6 num = -3.1415926
 7 print(带正/负符号:{:+.2f}.format(num))
 8 
 9 # 转为百分比
10 num = 0.34534
11 print(百分比:{:.2%}.format(num))
12 
13 # 科学计数法
14 num = 12305800000
15 print(科学计数法:{:.2e}.format(num))
16 
17 # ,分隔
18 num = 12305800000
19 print(","分隔:{:,}.format(num))
20 
21 # 转为二进制
22 num = 15
23 print(二进制:{:b}.format(num))
24 
25 # 十六进制
26 num = 15
27 print(十六进制:{:x}.format(num))
28 
29 # 八进制
30 num = 15
31 print(八进制:{:o}.format(num))
32 
33 """输出结果
34 小数点后两位:3.14
35 带正/负符号:-3.14
36 百分比:34.53%
37 科学计数法:1.23e+10
38 ","分隔:12,305,800,000
39 二进制:1111
40 十六进制:f
41 八进制:17
42 """
View Code

 

 

可以设置参数

技术分享图片
 1 print("网站名:{name}, 地址 {url}".format(name="博客园", url="https://home.cnblogs.com/u/yaner2018/"))
 2  
 3 # 通过字典设置参数
 4 site = {"name": "博客园", "url": "www.runoob.com"}
 5 print("网站名:{name}, 地址 {url}".format(**site))
 6  
 7 # 通过列表索引设置参数
 8 my_list = [博客园, https://home.cnblogs.com/u/yaner2018/]
 9 print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的
10 
11 ‘‘‘
12 网站名:博客园, 地址 https://home.cnblogs.com/u/yaner2018/
13 网站名:博客园, 地址 https://home.cnblogs.com/u/yaner2018/
14 网站名:博客园, 地址 https://home.cnblogs.com/u/yaner2018/
15 ‘‘‘
View Code

 

可以向 str.format() 传入对象:

技术分享图片
1 class demo(object):
2     def __init__(self, value):
3         self.value = value
4 my_value = demo(6)
5 print(value 为: {0.value}.format(my_value))  # "0" 是可选的
View Code

-----------------------------------------总结-----------------------------------------------------

 

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

 

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

 

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

------------------------------------------------------------------------------------------------

此外我们可以使用大括号 {} 来转义大括号,如下实例:

print ("{} 对应的位置是 {{0}}".format("runoob"))

#输出:

#runoob 对应的位置是 {0}

python 格式化输出(% VS format)

原文:https://www.cnblogs.com/yaner2018/p/11769801.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!