Python学习(二) 格式化数据

python格式化字符串方式有两种 %和format
1、百分号方式:%[(name)][flags][width].[precision]typecode
2、format方式:[[fill]align][sign][#][0][width][,][.precision][type]

百分号方式:%[(name)][flags][width].[precision]typecode

(name) 可选 用于选择指定的key 

print('%(A)s %(B)s %(C)s' %{'A':'Test1', 'C':11, 'B':'后边'})
输出:Test1 后边 11

flags 可选 可选值 +,-,' '或0 +表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充
width 可选 占有宽度(宽度包含字符串本身长度,如果小于本身长度,未格式化)

如:
print('%10f,%-10f' %(7.0,2.05))
print('%-5s,%15s' %('ABCDEFG','ABCDEFG'))
输出:
7.000000,2.050000
ABCDEFG, ABCDEFG

.precision    可选  可选,小数点后保留的位数(会四舍五入)

如:
print('%.2f,%.3f' %(1.23456,1.23456))
输出:1.23,1.235

typecode 必选 要格式化的类型编码  

  

format方式:[[fill]align][sign][#][0][width][,][.precision][type] 

fill 可选 对齐后空白处填充字符
align 可选 对齐方式(配合width使用)  <左对齐 >右对齐(默认)  =右对齐(只对数字类型有效) ^居中
sign 可选 有无符号数字     可选值 +、-、空格(正号空格,负号加负)
# 可选 对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
可选 为数字添加分隔符,如:1,000,000
width 可选 格式化所占宽度(包含字符串本身长度)
.precision 可选 小数点后保留的位数(会四舍五入)
type 可选 可选 空默认None 同s

   

例:

print('{:*^10}'.format('hello'))

print('{:,}'.format(10000000))

print('{:.2f},{:.3f}'.format(10.23456,10.23456))

格式化的类型编码


%s     字符串 (采用str()的显示)
%r      字符串 (采用repr()的显示)
%c     单个字符
%b       二进制整数
%d     十进制整数
%i      十进制整数
%o     八进制整数
%x     十六进制整数
%e     指数 (基底写为e)
%E     指数 (基底写为E)
%f      浮点数
%F     浮点数,与上相同
%g     指数(e)或浮点数 (根据显示长度)
%G    指数(E)或浮点数 (根据显示长度)
%%    字符"%"

%i和%d 搜索过说明,但是没测试出结果,网上说法是

都是表示有符号十进制整数,但%i可以自动将输入的八进制(或者十六进制)转换为十进制,而%d则不会进行转换。

(C中在scanf里会识别八进制、16进制输入,并转换成10进制。但在printf中%i和%d没区别)

posted on 2019-01-14 16:23  新手vs中华  阅读(157)  评论(0编辑  收藏  举报

导航