Python格式化输出控制print,format

整理自如下博客:

1. https://blog.csdn.net/huangfu77/article/details/54807835

2. https://www.cnblogs.com/RukawaKaede/p/6069977.html

 

*** 更新: python 3.6 中引入了一种新的字符串格式化,用起来更为方便。使用方式如下,以 f 开头,包含的 {} 表达式在程序运行时会被表达式的值代替。

print(f'There are {len(train_images)} training images in the dataset')

 

格式 描述

 

%% 百分号标记 #就是输出一个%
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中

        
%格式化符也可用于字典,可用%(name)引用字典中的元素进行格式化输出。

        
负号指时数字应该是左对齐的,“0”告诉Python用前导0填充数字,正号指时数字总是显示它的正负(+,-)符号,即使数字是正数也不例外。

        
可指定最小的字段宽度,如:"%5d" % 2。也可用句点符指定附加的精度,如:"%.3d" % 3。

e.g.
# 例:数字格式化
nYear = 2018
nMonth = 8
nDay = 18
# 格式化日期 %02d数字转成两位整型缺位填0
print '%04d-%02d-%02d'%(nYear,nMonth,nDay)
>> 2018-08-18 # 输出结果

fValue = 8.123
print '%06.2f'%fValue # 保留宽度为6的2位小数浮点型
>> 008.12 # 输出

print '%d'%10 # 输出十进制
>> 10
print '%o'%10 # 输出八进制
>> 12
print '%02x'%10 # 输出两位十六进制,字母小写空缺补零
>> 0a
print '%04X'%10 # 输出四位十六进制,字母大写空缺补零
>> 000A
print '%.2e'%1.2888 # 以科学计数法输出浮点型保留2位小数
>> 1.29e+00

格式化操作符辅助指令
符号 作用
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于
          用的是'x'还是'X')
0 显示的数字前面填充‘0’而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)

 

m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

 

 1 #!/usr/bin/python
 2 #coding=utf-8
 3 '''
 4 可以指定所需长度的字符串的对齐方式:
 5 < (默认)左对齐
 6 > 右对齐
 7 ^ 中间对齐
 8 = (只用于数字)在小数点后进行补齐
 9 '''
10 print ('1:\t|{0:>10},'.format('wangyu'))
11 print ('2:\t|{0:4.2f}'.format(1.1415926))
12 print ('3:\t|',format(1.1415926,'<10.2f'))
13 print ('4:\t|{0:<10},{1:<15}'.format('wangyu',1.1415926))
14 print ('5:\t|User ID: {uid} Last seen: {last_login}'.format(uid='root',last_login = '5 Mar 2008 07:20') )
15 
16 '''格式化指示符可以包含一个展示类型来控制格式。
17 例如,浮点数可以被格式化为一般格式或用幂来表示。
18 'b' - 二进制。将数字以2为基数进行输出。
19 'c' - 字符。在打印之前将整数转换成对应的Unicode字符串。
20 'd' - 十进制整数。将数字以10为基数进行输出。
21 'o' - 八进制。将数字以8为基数进行输出。
22 'x' - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
23 'e' - 幂符号。用科学计数法打印数字。用'e'表示幂。
24 'g' - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
25 'n' - 数字。当值为整数时和'd'相同,值为浮点数时和'g'相同。不同的是它会根据区域设置插入数字分隔符。
26 '%' - 百分数。将数值乘以100然后以fixed-point('f')格式打印,值后面会有一个百分号。
27 '''
28 
29 print ('6:\t|{0:b}'.format(3))
30 print ('7:\t|{0:c}'.format(3))
31 print ('8:\t|{0:d}'.format(3))
32 print ('9:\t|{0:o}'.format(3))
33 print ('10:\t|{0:x}'.format(3))
34 print ('11:\t|{0:e}'.format(3.75))
35 print ('12:\t|{0:g}'.format(3.75))
36 print ('13:\t|{0:n}'.format(3.75))#浮点数
37 print ('14:\t|{0:n}'.format(3))  #整数
38 print ('15:\t|{0:%}'.format(3.75))
39 
40 #输入形式的控制format
41 a = int(input('a:'))
42 b = int(input('b:'))
43 print ('16:\t|%*.*f' % (a, b, 1.1415926))
44 
45 print ('17:\t|{array[2]}'.format(array=range(10)))
46 print ('18:\t|{attr.__class__}'.format(attr=0))
47 print ('19:\t|{digit:*^ 10.5f}'.format(digit=1.0/3))
48 
49 '''
50 类和类型可以定义一个__format__()方法来控制怎样格式化自己。
51 它会接受一个格式化指示符作为参数:
52 '''
53 def __format__(self, format_spec):
54     if isinstance(format_spec, unicode):
55         return unicode(str(self))
56     else:
57         return str(self)
复制代码

#!/usr/bin/python
#coding=utf-8
#使用str.format()函数

#使用'{}'占位符
print('I\'m {},{}'.format('Hongten','Welcome to my space!'))
print('#' * 40)

#也可以使用'{0}','{1}'形式的占位符
print('{0},I\'m {1},my E-mail is {2}'.format('Hello','Hongten','hongtenzone@foxmail.com'))
#可以改变占位符的位置
print('{1},I\'m {0},my E-mail is {2}'.format('Hongten','Hello','hongtenzone@foxmail.com'))
print('#' * 40)

#使用'{name}'形式的占位符
print('Hi,{name},{message}'.format(name = 'Tom',message = 'How old are you?'))
print('#' * 40)

#混合使用'{0}','{name}'形式
print('{0},I\'m {1},{message}'.format('Hello','Hongten',message = 'This is a test message!'))
print('#' * 40)

#下面进行格式控制
import math
print('The value of PI is approximately {}.'.format(math.pi))
print('The value of PI is approximately {!r}.'.format(math.pi))
print('The value of PI is approximately {0:.3f}.'.format(math.pi))

table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
for name, phone in table.items():
    print('{0:10} ==> {1:10d}'.format(name, phone))

table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; ''Dcab: {0[Dcab]:d}'.format(table))

  • 11
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值