Python格式化字符输出用法详解

Python Print() 格式化输出用法详解

Python格式化有两种方式,一种利用%号格式输出,另一种利用Format;
建议利用Format格式,其具有较好的可扩展性

1、字符串格式化符号%

符号 描述
%c
格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整形
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 用科学计数法格式化浮点数
%g %f和%e的简写
%G %F和%E的简写
%p 用十六进制数格式化变量的地址
  • 格式化操作符辅助指令
符号 功能
*
定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号(+)
在正数前面显示空格
# 在八进制数前面显示零(“0”),在十六进制前面显示‘0x’或者‘0X’(取决于用的是‘x’还是‘X’)
0 显示的数字前面填充‘0’而不是默认的空格
% %%输出一个单一的‘%’
(var) 映射变量(字典参数)
m.n. m是显示的最小总宽度,n是小数点后的位数(如果可用的话)
print('小女孩是%d月%d号出生的' %(3,18))
小女孩是3月18号出生的

如果要在print()函数中打印%号,则不能用\符号,需要用两个%%号,最后打印的即为一个%号

print('%%10d代表打印的整数至少为%10d位' %(10))
print('%%20S代表输出字符串:%20s宽度至少为%d' %('www.cn.bing.com',20))
print('%%09d代表输出的整数:%09d至少为%d位,前面不足的用0补足'%(123465,9))
print('%%+09d代表输出的整数:%+09d至少为%d位,显示正负号'%(123654,9))
print('%%+-9f代表输出的浮点数: %+-9f至少为%03d位数,显示正负号并且左对齐'%(1.3024,9))
print('%%+09.5f代表输出的浮点数:%+09.5f 显示正负号,最小宽度为9,精度为5,左边不足的补0'%(3.141592654))
%10d代表打印的整数至少为        10位
%20S代表输出字符串:     www.cn.bing.com宽度至少为20
%09d代表输出的整数:000123465至少为9位,前面不足的用0补足
%+09d代表输出的整数:+00123654至少为9位,显示正负号
%+-9f代表输出的浮点数: +1.302400至少为009位数,显示正负号并且左对齐
%+09.5f代表输出的浮点数:+03.14159 显示正负号,最小宽度为9,精度为5,左边不足的补0

2、print()的Format格式 模板字符串

编写新代码时,应选择使用字符串方法format,它融合并强化了早期方法的优点。使用这种方法时,每个替换字段都用花括号括起,其中可能包含名称,还可能包含有关如何对相应的值进行转换和格式设置的信息。
print的Format格式其实是打印字符串类型的Format函数返回的字符串,也就是说这个语法只是调用了字符串的format函数,而print只是打印了一串字符串。字符串类型还有很多其他函数…

语法说明:

Python格式化字符输出用法详解_第1张图片


常用示例:

print("{}, {} and {}".format('First','Second','Three'))

print("{1}, {0} and {2}".format('First','Second','Three'))

print("{Variable} is approximately {value:4.1f}".format(value = 3.14,Variable=3.1415))


First, Second and Three
Second, First and Three
3.1415 is approximately  3.1

特殊的使用Format格式可以使用索引,还可以使用句点表示法来访问导入的模块中的方法、属性、变量和函数。

如下示例:

在字符串前加‘u’意思为将字符串进行utf-8编码
在字符串前加’r’意为对字符串不进行格式化转换

print(r'Hello\n')
print(u'Hello\n')
Hello\n
Hello


import math
tmpl = "The {mod.__name__} module defines the value {mod.pi} for pi"
print(tmpl.format(mod=math))

The math module defines the value 3.141592653589793 for pi

Format 还可以打印千位分隔符、字符串切片

print("{:,} is ?".format(10000000000000000000000000000000000000000000))
print("{:.5}".format('Hello world'))
10,000,000,000,000,000,000,000,000,000,000,000,000,000,000 is ?
Hello

Format 还可以通过<,>,^分别指定左对齐,右对齐及居中

iVar = 45321
print('{s1:>20.3f}\n{s1:b}\n{s1:e}\n{s1:o}\n{s1:x}\n{s1:X}\n{s1:%}'.format(s1=iVar))
           45321.000
1011000100001001
4.532100e+04
130411
b109
B109
4532100.000000%


字符串除了有Format函数格式外,还有其他函数也可以作为输出

print('a'*10)
print('sdf'.capitalize())
print('Hello python'.center(50))
aaaaaaaaaa
Sdf
                   Hello python                   

字符串的Format函数也可以将分配参数作为输入

octets = [192, 168, 45, 1]
print('{:02b},{:02o},{:02X},{:02d}'.format(*octets))
def add(u,v,w,x):
    print(u)
    print(v)
    print(w)
    print(x)

add(*octets)

11000000,250,2D,01
192
168
45
1

11000000,250,2D,01

替换字段嵌套:根据指定宽度打印格式良好的价格列表

width = 50
#int(input('Plesase enter the width: '))

price_Width = 10
item_width = width - price_Width

header_fmt = '{{:{}}}{{:>{}}}'.format(item_width,price_Width)
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width,price_Width)
print('='*width)
print(header_fmt.format('item','price'))
print('-'*width)
print(fmt.format('apple',0.4))
print(fmt.format('pears',0.52))
print(fmt.format('Prunes (4 lbs.)',12))
print('-'*width)
==================================================
item                                         price
--------------------------------------------------
apple                                         0.40
pears                                         0.52
Prunes (4 lbs.)                              12.00
--------------------------------------------------

注意:format 格式中print如果要在最终结果中包含花括号’{‘’}‘符号,则需要额外加一个符号来指定’{{‘和’}}’
注意:在format 中默认的数字与字符串的对齐方式是不一样的,数字对齐方式是右对齐,字符串默认对齐方式为左对齐
具体的示例及格式解释可参考Kindle Python基础教程

以上例子就是用的双花括号 header_fmt = ‘{{:{}}}{{:>{}}}’.format(item_width,price_Width)
'{{:{}}}{{:>{}}}'中,{{:{}}}会在format后返回{:item_width},因为双花括号会返回一个单花括号,以上的例子相当于做了两次format嵌套,由内到外填充替换字段

print Format #号选项

# 可以放在符号说明符和宽度之间(如果指定了这两种设置),这个选项将触发另一种转换方式,转换细节随类型而异。例如,对于二进制、八进制和十六进制转换,将加上一个前缀。

print('{:b}'.format(45))#输出二进制
print('{:#b}'.format(45))#输出二进制带字符
print('{:#o}'.format(45))#输出八进制带字符
print('{:#x}'.format(45))#输出十六进制带字符
101101
0b101101
0o55
0x2d

你可能感兴趣的:(Print格式化输出,python,字符串)