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':'后边'}) |
flags | 可选 | 可选值 +,-,' '或0 | +表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充 |
width | 可选 | 占有宽度(宽度包含字符串本身长度,如果小于本身长度,未格式化) |
如: |
.precision | 可选 | 可选,小数点后保留的位数(会四舍五入) |
如: |
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没区别)