python3.6后支持3种格式化输出方式,其中前两种为%-formatting及str.format ,第三种即为 f-string。
1.%-formatting
据传该格式化方法源于C..
>>>username = input("请输入用户名:") >>>pwd = input("请输入密码:") >>>print("用户名为:%s,密码为:%s" %(username, pwd)) 用户名为:张三,密码为:123456
%后字符含义:
- %s:str,字符类型,用str()方法处理对象
- %d(i):decimal,十进制数
- %x: hex, 十六进制数
- %f: float,浮点数
- %r:类似于%s类型,用rper()方法处理对象,此外用%r打印时能够重现它所代表的对象 (拓展:Difference between __str__ and __repr__)
指定长度:
- %5d:右对齐,不足左边补空格
- %-5d:- 代表左对齐,不足右边默认补空格
- %05d:右对齐,不足左边补0
浮点数:
- %f: 默认是输出6位有效数据, 会进行四舍五入
- %.8f:指定小数点位数的输出,保留小数点后8位
- %4.8f:4代表整个浮点数的长度,包括小数,只有当字符串的长度大于4位才起作用
2.str.format
例:格式化输出
------------ info of XXX ------------
Name : XXX
Age : 25
job : XXXX
Hobby: XXXXX
------------------ end ----------------
2.1不带编号
name = "XXX" age = 25 job = "XXXX" hobby = "XXXXX" print(""" ------------ info of {} ------------ Name : {} Age : {} job : {} Hobby: {} ------------------ end ------------------ """.format(name, name, age, job, hobby))
2.2带编号
name = "XXX" age = 25 job = "XXXX" hobby = "XXXXX" print(""" ------------ info of {0} ------------ Name : {0} Age : {1} job : {2} Hobby: {3} ------------------ end ------------------ """.format(name, age, job, hobby))
2.3带关键字
print(""" ------------ info of {name} ------------ Name : {name} Age : {age} job : {job} Hobby: {hobby} ------------------ end ------------------ """.format(name="XXX", age=25, job="XXXX", hobby="XXXXX"))
*2.4传入列表(元组)
list = ["XXX", 25, "XXXX", "XXXXX"] print(""" ------------ info of {0} ------------ Name : {0} Age : {1} job : {2} Hobby: {3} ------------------ end ------------------ """.format(*list))
*2.5传入字典
dic = {"name": "XXX", "age": 25, "job": "XXXX", "hobby": "XXXXX"} print(""" ------------ info of {name} ------------ Name : {name} Age : {age} job : {job} Hobby: {hobby} ------------------ end ------------------ """.format(**dic))
*2.6指定长度输出
格式{:*>n}
- >:右对齐
- <:左对齐
- ^:中间对齐
- n:指定的长度
print("左对齐是:{0:*<5},\n右对齐是:{1:*>5},\n居中的是:{2:*^5}".format("左", "右", "中"))
输出:
左对齐是:左****,
右对齐是:****右,
居中的是:**中**
3.f-string(python解释器3.6版本后可用)
>>>name = "zhangsan" >>>age = 25 >>>print(f"我的名字是{name},年龄是{age}") 我的名字是zhangsan,年龄是25