format函数实现字符串格式化的功能
基本语法为:
通过 : 和 {} 来控制字符串的操作
一、对字符串进行操作
1. 不设置指定位置,按默认顺序插入
①当参数个数等于{}个数的时候
str_1 = "小明{}小美,可是小美{}小明".format("喜欢", "不喜欢") print(str_1)
运行结果:
②当参数个数大于{}个数的时候
str_1 = "小明{}小美,可是小美{}小明".format("喜欢", "不喜欢", "也不喜欢", "更不喜欢") print(str_1)
运行结果:
③当参数个数习小于{}个数的时候
str_1 = "小明{}小美,可是小美{}小明".format("喜欢") print(str_1)
运行结果:
程序会报错:越界
由此可以得出,当我们不指定参数位置的时候,format函数会帮我们按顺序将其接收到的参数,填入到{}中。
2. 设置指定位置
当format接收到的参数个数大于{}或者我们想将不同{}替换为相同字符串的时候,我们可以在{}内指定接收第几个参数。format接收的参数,从0开始。
str_1 = "小明{1}小美,可是小美{3}小明,小美{0}小明,小美{2}小华".format("不喜欢", "喜欢", "更喜欢", "很讨厌") print(str_1)
在这一句代码中,分别为不同的{}指定了接收的参数位置。
运行结果:
很显然,如果我们的{}的个数小于format的参数也是OK的。
str_1 = "小明{1}小美,可是小美{3}小明,小美{2}小华".format("不喜欢", "喜欢", "更喜欢", "很讨厌") print(str_1)
运行结果:
由此我们得出结论:
在使用format()函数的时候,我们给format()的个数是不限的,如果我们并没有在{}中指定位置,那么format()会自动按顺序将参数填入{},而如果我们为{}指定了位置,那么format()就会把指定位置的参数填入对应的{}中。
3.设置format()参数的值①直接在format()中进行赋值
str_1 = "博主:{name}, 博客地址:{url}".format(name="KaiSarH", url="https://blog.csdn.net/KaiSarH")
运行结果:
②通过传递多值参数向format传递参数进而对{}进行赋值
关于多值参数,可以看一下Python学习笔记之函数的参数和返回值
- 使用**传递字典。
在Python中,使用**可以传递一个字典参数,我们可以使用键名进行匹配,进而进行赋值
dict_1 = {"name": "KaiSarH", "url": "https://blog.csdn.net/KaiSarH"} str_2 = "博主:{name}, 博客地址:{url}".format(**dict_1)
运行结果:
我们向format()传递的字典参数,所包含的键值对,必须包含所有的{}名。只能多(正确),不能少(报错)。
dict_1 = {"name": "KaiSarH", "url": "https://blog.csdn.net/KaiSarH", "login": "login information"} str_2 = "博主:{name}, 博客地址:{url}".format(**dict_1) print(str_2) dict_1 = {"name": "KaiSarH", "key": "https://blog.csdn.net/KaiSarH", "login": "login information"} str_4 = "博主:{name}, 博客地址:{url}".format(**dict_1) print(str_4)
运行结果:
注意:我们可以向format()中传递多个字典,但是不可以含有相同键。
dict_1 = {"name": "KaiSarH", "url": "https://blog.csdn.net/KaiSarH", "login": "login information"} str_2 = "博主:{name}, 博客地址:{url}".format(**dict_1) dict_2 = {"name": "KaiSarH", "key": "https://blog.csdn.net/KaiSarH", "login": "login information"} str_4 = "博主:{name}, 博客地址:{url}".format(**dict_1, **dict_2) print(str_4)
运行结果:
- 传递列表
list_1 = ["KaiSarH","https://blog.csdn.net/KaiSarH"] str_3 = "博主:{0[0]}, 博客地址:{0[1]}".format(list_1)
运行结果:
除了传递一个列表,我们也可以向format()中传递多个列表,只需保证取值的时候无误就可以。
list_1 = ["ZhangSan","https://blog.csdn.net/KaiSarH"] list_2 = ["KaiSarH", "http:www.baidu.com"] str_3 = "博主:{1[0]}, 博客地址:{0[1]}".format(list_1, list_2)
运行结果:
③向format()中传入对象,进行赋值
与列表相同,我们同样可以向format()中传递多个对象,只要在赋值的之后做好对应就可以。
class Dog: def __init__(self, name): self.name = name class Mouse: def __init__(self, name): self.name = name tom = Dog("Tom") jerry = Mouse("Jerry") str_1 = "{0.name} want to eat {1.name}".format(tom, jerry) print(str_1)
运行结果:
二、对数字进行格式化
对于数字的格式化,我们主要是在{}中进行设置格式化数字的多种方法
1.保留小数点后n位
格式:{:.nf}
print(" {:.1f}".format(3.1415926535)) print(" {:.3f}".format(3.1415926535)) print(" {:.4f}".format(3.1415926535)) print(" {:.6f}".format(3.1415926535))
运行结果:
2.带符号保留小数点后n位
格式:{:+.nf}
print(" {:+.1f}".format(3.1415926535)) print(" {:+.3f}".format(-3.1415926535)) print(" {:+.4f}".format(3.1415926535)) print(" {:+.6f}".format(-3.1415926535))
运行结果:
{:.nf}和 {:+.nf}的区别
负数无区别,整数有无符号。
print(" {:.1f}".format(3.1415926535)) print(" {:+.1f}".format(3.1415926535)) print(" {:.3f}".format(-3.1415926535)) print(" {:+.3f}".format(-3.1415926535)) print(" {:.4f}".format(3.1415926535)) print(" {:+.4f}".format(3.1415926535)) print(" {:.7f}".format(-3.1415926535)) print(" {:+.7f}".format(-3.1415926535))
运行结果:
3.不带小数(只保留整数)
格式:{:.0f}
print(" {:.0f}".format(3.1415926535)) print(" {:.0f}".format(-3.1415926535)) print(" {:.0f}".format(3.8415926535))
运行结果:
4.如果整数的位数不足n位,在左边进行数字补零。如果已经够了n位,直接输出
格式:{:0>nd}
print(" {:0>2d}".format(5)) print(" {:0>3d}".format(5)) print(" {:0>5d}".format(123456))
运行结果:
5.如果整数的位数不足n位,在右边进行x补充。如果已经够了n位,直接输出
格式:{:x<4d}
print("{:x<2d}".format(5)) print("{:x<3d}".format(5)) print("{:x<4d}".format(123456))
运行结果:
很显然,在补充操作中,我们既可以指定在哪一边补充,也可以指定补充的值为什么。
我们也可以利用print("{:x>.2f}".format(3.1))或者{:x<.2f}对浮点数进行操作
6.以逗号分隔数字格式,每三位加入一个,
格式:{:,}
print(" {:,}".format(314156926))
运行结果:
7.百分比格式(在我理解,就是把数字×100,保留两位数字,然后加一个百分号)
格式:{:.2%}
print("{:.2%}".format(0.27896))
运行结果:
8.指数记法
格式:{:.2e}
print("{:.2e}".format(100))
运行结果:
9.右对齐(默认宽度为10)
格式:{:>10d}
print(" {:>10d}".format(100)) print(" {:>10d}".format(2)) print(" {:>10d}".format(12580))
运行结果:
10.左对齐(默认宽度为10)
格式:{:<10d}
print("{:<10d}".format(100)) print("{:<10d}".format(2)) print("{:<10d}".format(12580))
运行结果:
11.中间对齐(默认宽度为10)
格式:{:^10d}
print("{:^10d}".format(100)) print("{:^10d}".format(2)) print("{:^10d}".format(12580))
运行结果:
12.进制——b、d、o、x 分别是二进制、十进制、八进制、十六进制。
格式:
‘{:b}'.format(11)
‘{:d}'.format(11)
‘{:\o}'.format(11)
‘{:x}'.format(11)
‘{:#x}'.format(11)
‘{:#X}'.format(11)
print("{:b}".format(125)) print("{:d}".format(125)) print("{:o}".format(125)) print("{:x}".format(125)) print("{:#x}".format(125)) print("{:#X}".format(125))
运行结果:
当我们在格式化中,传入的参数中包含{}的时候,我们可以用{}进行转义。
当我们直接在format()中对参数进行赋值的时候,我们必须要把对参数的赋值放在最后
print("{name}对应的位置是{{0}},{}对应的位置是{{1}}".format("489", "zhangsan", name="123"))
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]