Python格式化输出总结

一、 %方法:

%s是占位符或者格式化字符
在这里插入图片描述
python字符串格式化符号:

符号描述
%s格式化字符串
%d格式化整数
%f格式化浮点数字,可指定小数点后的精度
%c格式化字符及其ASCII码
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f和%e的简写
%G%f 和 %E 的简写
%p用十六进制数格式化变量的地址

格式化操作符辅助指令:

符号功能
*定义宽度或者小数点精度
-用做左对齐
+在正数前面显示加号( + )
在正数前面显示空格
#在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
0显示的数字前面填充’0’而不是默认的空格
%‘%%‘输出一个单一的’%’
(var)映射变量(字典参数)
m.n.m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

其撰写格式为:

%[-][+][0][m][.n]格式化字符 % 参数

代码示例:

# m占位宽度
tempate = "格式化的内容是 |%20s|"
print(tempate % 'hello')

tempate = "格式化的内容是 |%-20s|"
print(tempate % 'hello')

tempate = "格式化的内容是 |%.2s|"
print(tempate % 'hello')

在这里插入图片描述

# 定义字符串变量 name,输出 我的名字叫 小明,请多多关照!
name = "大小明"
print("我的名字叫 %s,请多多关照!" % name)

# 定义整数变量 student_no,输出 我的学号是 000001
student_no = 100123456
print("我的学号是 %06d" % student_no)

# 定义小数 price、weight、money,
# 输出 苹果单价 9.00 元/斤,购买了 5.00 斤,需要支付 45.00 元
price = 8.5
weight = 7.5
money = price * weight
print("苹果单价 %.2f 元/斤,购买了 %.3f 斤,需要支付 %.4f 元" % (price, weight, money))

# 定义一个小数 scale,输出 数据比例是 10.00%
scale = 0.8
print("数据比例是 %.2f%%" % (scale * 100))

输出示例
以下这样写也是对的
在这里插入图片描述
在达到默认长度时不用填充
在这里插入图片描述
关于十六进制:

#输出十六进制示例
a=15
b=0x15
c=15
print("a=%d"%a)
print("b=%x"%b)
print("c=%x"%c)
print("c=%#x"%c)
print("c=%X"%c)

输出示例

换行问题
在 Python 中 print 默认是换行的:


>>>for i in range(0,3):
...     print (i)
... 
0
1
2
>>>

要想不换行你应该写成 print(i, end = ‘’ )

>>>for i in range(0,3):
...     print(i, end = '' )
... 
012

print 会自动在行末加上回车, 如果不需回车,只需在 print 语句的结尾添加一个逗号 , 并设置分隔符参数 end,就可以改变它的行为

>>>for i in range(0,6):
...     print(i)
... 
0
1
2
3
4
5
>>> for i in range(0,6):
...     print(i, end=" ")
... 
0 1 2 3 4 5

补充:金额千分位%方法实现要调用format(并不是下一节要说的str.format)

#金额千分位格式化 format
tempate = "千分位格式化 %s"
print(tempate%format(123456.678,','))

在这里插入图片描述

二、 str.format()方法:

大佬文章传送门Python 中 str.format() 方法详解

1.优点

%方法有很多问题不能解决,而这个要更加灵活,比如方法1可以实现“13”前填充“0”,但是很难实现类似于"+++++++++ab+++++"这样的填充。
在比如在进行多进制输出时,会重复传入参数,如下图:

# 多个一样的参数
tempate = "这个数是:%d,十六进制是:%x,八进制是:%o"
print(tempate%(12,12,12))

12传了三次,而使用方法2就很好的解决这些问题

2.符号含义

str.format() 方法通过字符串中的花括号 {} 来识别替换字段,从而完成字符串的格式化。
替换字段 由字段名和转换字段 以及格式说明符 format specifier 组成,一般形式为:
{字段名!转换字段:格式说明符}。

在这里插入图片描述

符号含义
index参数的序号或者键
fill填充的字符(任意字符填充)
align对齐方式
sign符号选项
#十六进制x 八进制 o二进制b 数前面加x o b
m占位宽度
,千分位
.n小数位数
type格式化字符类型s d b x o f
align对齐方式 (配合填充使用)
<左对齐
>右对齐
^居中对齐
=右对齐符号在最左侧需要配合占位宽度使用
sign符号选项
+正数正号,负数负号
-正数不变,负数负号
空格正数加空格负数负号

3.indedx参数

index参数有三种情况:

  • 省略不写 {}
  • 数字 {十进制非负整数}
  • 变量名 {合法的Python标识符}

代码示例:

print("{} {} {}".format(1,2,3))
print("{0} {1} {0}".format(1,2))
a=12
print("这个数是:{0},十六进制是:{0:0x},八进制是:{0:0o}".format(a))

在这里插入图片描述

4.字符串 s (默认左对齐)

代码示例:
关于对齐:

# s
print("{:s}".format('hello'))
print("|{:20s}|".format('hello'))# 默认左对齐
print("|{:>20s}|".format('hello'))# 右对齐
print("|{:^20s}|".format('hello'))# 居中
print("|{:20.2s}|".format('hello'))# ".n"在字符串中表示截取,在浮点数中表示精度

在这里插入图片描述
关于填充:

注意:[:[fill]align]的形式表示,在进行填充之前一定要有对齐方式,即使是默认的左对齐也要加“<”,数值型是可以省略的

print("|{:+^20s}|".format('hello'))
print("|{:*<20s}|".format('hello'))
print("|{:2>20s}|".format('hello'))

在这里插入图片描述

5.数值型 d x o b (默认右对齐)

关于对齐:

print("|{:20d}|".format(13))# 默认右对齐
print("|{:020d}|".format(13))
print("|{:*<20d}|".format(13))
print("|{:-^20d}|".format(13))

在这里插入图片描述

关于进制

print("{0:d} {0:x} {0:o} {0:b}".format(13))
print("{0:#d} {0:#x} {0:#o} {0:#b}".format(13)) # ’#‘显示进制
print("|{0:-^12d}{0:-^12x}{0:-^12o}{0:-^12b}|".format(13))
print("|{0:-^#12d}{0:-^#12x}{0:-^#12o}{0:-^#12b}|".format(13))

在这里插入图片描述
关于正负:

#正负
print("|  {:d}  ||  {:d}  |".format(13,-13))
print("|  {:+d}  ||  {:+d}  |".format(13,-13)) #’+‘:正数正号,负数负号
print("|  {:-d}  ||  {:-d}  |".format(13,-13)) #’-‘:正数不变,负数负号
print("|  {: d}  ||  {: d}  |".format(13,-13)) #’‘: 正数加空格负数负号

在这里插入图片描述

5.浮点数 f

#浮点数 F
print("{:f}".format(12345.6789))
print("{:.2f}".format(12345.6789))
print("{:20.2f}".format(12345.6789))

在这里插入图片描述

6.参数传递

#参数传递
print("{} {} {}".format(1,2,3))

#关键字传参
print("{name} {age} {sex}".format(name='Jhon',age=18,sex='man'))
print("{name} {age:-<10d} {sex}".format(name='Jhon',age=18,sex='man'))

#使用元祖
par = (7,8,9)
print("{} {} {}".format(par[0],par[1],par[2]))
print("tuple:{0[0]} {0[1]} {0[2]}".format(par))

#使用字典
par = {"x":1,"y":2,"z":3}
print("dict:{0[x]} {0[y]} {0[z]}".format(par))

在这里插入图片描述

7.千分位、金额

print("{:,.2f}元".format(12345.6789))

在这里插入图片描述

三、 f-string(Python3.6版本新方法):

format方法的变形,要更方便一点,就是在方法2的基础上改变了传参的新写法,语法基本一样
代码示例:

name = 'johny'
age = 18
salary = 19999.2135
print('我是{} 我的年龄是{},薪水{}元'.format(name,age,salary))
print(f'我是{name} 我的年龄是{age},薪水{salary}元')
print(f'我是{name} 我的年龄是{age},薪水{salary:.3f}元')#和format语法相同
print(f'我是{name:.2s} 我的年龄是{age:010d},薪水{salary:,.3f}元')

在这里插入图片描述

方法3比方法2更优的是,在{}块中是支持方法调用的,这是f-string最强大的地方,可以调用字符串固有的方法,也可以调用自己创建的类方法,就有更加灵活的使用

name = 'johny'
age = 18
salary = 19999.2135
print(f'我是{name.capitalize()}')#调用字符串首字母大写方法

在这里插入图片描述

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值