python学习笔记--NO.2 格式化处理

一、%运算符

1.语法

格式:格式模板 % 值组

值组:两个及以上时需要用小括号括起来,中间用逗号隔开

格式模板
%[(name)] [flags] [width].[precision]typecode

下面是各参数的意义:
1.1 typecode:必选参数,和C语言类似

说明
s格式化为字符串
d格式化十进制整数
f格式化浮点型数
c格式化整数
o格式化八进制整数
x格式化十六进制整数
e/E格式化科学技术法
print("%s"%20.53)
print("%d"%20.53)
print("%f"%20.53)#浮点型输出默认是六位
print("%e"%3.1415926)
结果:
20.53
20
20.530000
3.141593e+00

1.2 name:可选参数,较少使用,主要是方便进行特定工作。
作用是输出字典对应键的值。

print("%(name)s,%(price)d"%{'name':'dog','price':200})
print("%(name)s,%(price)d"%{'price':200,'name':'dog'})
结果:
dog,200
dog,200
#顺序不需要一一对应

1.3 flags:可选参数

说明
+右对齐,正数前加正号,负数前加负号
-左对齐,正数前无符号,负数前加负号
空格右对齐,正数前加空格,负数前加负号
0正数前无符号,负数前加负号,用0填充空白处

1.4 width:可选,代表占位宽度
1.5 .precision:可选参数,设置浮点数或字符串的精度

print('%+6d'%1)
print('%+6d'%-1)
print('%-6d'%-1)
print('%06d'%1)
print('%.2f'%3.1415926)
print('%.2s'%'abcdefg')
结果:
    +1
    -1
-1    
000001
3.14
ab

二、format()函数(非str.format())

1.语法

format(value,format_spec)
format_spec是格式化解释
当format_spec为空时,format相当于str(value),返回一个字符串

format_spec的编写方式:
太复杂不想写了,直接举例

print(format('python','10'))#字符串默认左对齐
print(format(2,'10'))#数字默认右对齐
print(format(2,'0<10'))#左对齐,不足部分0填充
print(format(2,'*>10'))#右对齐,不足部分*填充
print(format(2,'@^10'))#居中,不足部分@填充
print(format(-81.23,'0=10'))#数字填充,负号后面不足部分用0号填充
print(format(12.2,'f'))#转换为浮点型,小数默认6位
print(format(12,'o'))#转换为八进制

结果:
python    
         2
2000000000
*********2
@@@@2@@@@@
-000081.23
12.200000
14

2.常用

生成数据编号
生成日期编号
格式化value
进制转换
格式化日期和时间

符号说明
%y两位数的年份表示(00~99)
%Y四位数的年份表示(000~9999)
%m月份(01~12)
%d月内中的一天(0~31)
%H24小时制小时数(0~23)
%I12小时制小时数(01~12)
%M分钟数(00~59)
%S秒(00~59)
%a本地简化星期名称
%A本地完整星期名称
%b本地简化的月份名称
%B本地完整的月份名称
%c本地相应的日期表示和时间表示
%w星期(0~6),星期天为星期的开始
%W一年中的星期数(00~53)星期一为星期的开始
%Z当前时区的名称
import datetime
now = datetime.datetime.now()

print(format(now,'%Y-%m-%d  %H-%M-%S'))
print(format(now,'%c'))
结果:
2021-05-29  20-51-22
Sat May 29 20:51:22 2021

三、str.format()方法

format方法可以对字符串进行格式化操作

1.语法

{参数序号:格式控制标记}.format(*args,**kwargs)

参数序号:位置参数或关键字参数传递过来的参数变量

格式控制标记:和前面format()函数的format_spec参数一样,标记参数显示的格式

*args:位置参数,是元组 ,可以为多个值,和参数序号位置一一对应,数量上一致

**kwargs:关键字参数,是字典,通过序号和参数序号进行对应,可以一对多,数量任意

2.1 索引序号和参数映射

2.1.1 通过位置参数映射
print('{}*{}'.format(1,2))#通过位置映射
print('{}*{}'.format(2,1))

print('{0}:{1}:{2}'.format('Q','W','E'))#通过索引序号
print('{1}:{0}:{1}'.format('Q','W','E'))

结果:
1*2
2*1
Q:W:E
W:Q:W

位置参数的值的可以是字符串、元组和表,通过*arg形式来映射

print('{1}:{0}:{1}'.format(*'QWE'))

web = ['www','baidu','com']
print('{1}:{0}:{1}'.format(*web))
结果:
W:Q:W
baidu:www:baidu
2.1.2 关键字映射
print('名字:{name},年龄:{age}'.format(name='tony',age = 20))
结果:
名字:tony,年龄:20

还可以将元组或字典打散成关键字参数给函数,通过*或**

people = {'name':'tony','age':'20','address':'china'}
print('名字:{name},年龄:{age},地址:{address}'.format(**people))
结果:
名字:tony,年龄:20,地址:china
2.1.3 通过元素映射

需要截取字符串或元组中部分元素进行格式化处理时,用切片,但只能对单个元素进行提取

print('{0[1]}年的{0[0]}'.format(('吴京','2018')))
print('{0[2]}.{0[1]}.{0[0]}'.format(['com','baidu','www']))
print('{0[1]},{1[1]},{0[0]},{1[0]}'.format('吴战','京狼'))
print('{0[0]}.{0[1]}.{0[2]}'.format('www.baidu.com'.split('.')))

结果:
2018年的吴京
www.baidu.com
战,,,京
www.baidu.com

此方法同样使用于元组,列表,字典,组合

2.1.4 通过传入对象映射
class People:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __str__(self):
        return '我是{self.age}岁的{self.name}'.format(self=self)

print(str(People('吴京','18')))

结果:
我是18岁的吴京

2.2 格式化模板标签

就是用 : 后面的格式控制标记来更改格式
主要就是占位之类的

#1.fill,在width内采用什么方式填充,默认空格
print("{:10}".format('Peter'))
#2.align,可选<,>,=,^等,代表宽度内的对其方式
#对于字符串默认左对齐,对数字默认右对齐
print("{:*>10}".format('Peter'))
print("{:0^10}".format('Peter'))
#3.width代表宽度
#4.加.precision代表精度
#5.加type代表类型
结果:
Peter     
*****Peter
00Peter000
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值