python中“format后的参数排列顺序必须按照格式字符串中槽{}的排列顺序依次一一对应”为什么错误?谢谢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="")
运行结果:
②通过传递多值参数向format传递参数进而对{}进行赋值
- 使用**传递字典 。
在Python中,使用**可以传递一个字典参数,我们可以使用键名进行匹配,进而进行赋值
dict_1 = {"name": "KaiSarH",
"url": ""}
str_2 = "博主:{name}, 博客地址:{url}".format(**dict_1)
运行结果:
我们向format()传递的字典参数,所包含的键值对 , 必须包含所有的{}名 。只能多(正确),不能少(报错) 。
dict_1 = {"name": "KaiSarH",
"url": "",
"login": "login information"}
str_2 = "博主:{name}, 博客地址:{url}".format(**dict_1)
print(str_2)
dict_1 = {"name": "KaiSarH",
"key": "",
"login": "login information"}
str_4 = "博主:{name}, 博客地址:{url}".format(**dict_1)
print(str_4)
运行结果:
注意:我们可以向format()中传递多个字典,但是不可以含有相同键 。
dict_1 = {"name": "KaiSarH",
"url": "",
"login": "login information"}
str_2 = "博主:{name}, 博客地址:{url}".format(**dict_1)
dict_2 = {"name": "KaiSarH",
"key": "",
"login": "login information"}
str_4 = "博主:{name}, 博客地址:{url}".format(**dict_1, **dict_2)
print(str_4)
运行结果:
- 传递列表
list_1 = ["KaiSarH",""]
str_3 = "博主:{0[0]}, 博客地址:{0[1]}".format(list_1)
运行结果:
除了传递一个列表,我们也可以向format()中传递多个列表 , 只需保证取值的时候无误就可以 。
list_1 = ["ZhangSan",""]
list_2 = ["KaiSarH", "http:"]
推荐阅读
- 东京旅游驾驶模拟游戏,东京游软件
- java开发的安卓模拟器,java 安卓模拟器
- html5有没有资格证书,html需要考什么证
- javascript主要特点结束标语,javascript的主要内容
- c语言中有go吗 c语言有吗
- oracle添加表索引,oracle给表字段添加索引
- 安卓免费代理软件,安卓免费代理软件 知乎
- php链接数据库时间 php 显示数据库最新10条
- oracle多表视图的创建索引,Oracle怎么创建视图