data = '{"appId":10000,"timeStamp":1613796141,"username":"{}","password":"{}"}'.format(17611008811,25655425)
这样写为啥报错下面的
data = '\{"appId":10000,"timeStamp":1613796141,"username":"{0}","password":"{1}"\}'.format(17611008811,25655425)
KeyError: '"appId"'
###在 format 里 { 和 } 是特殊符号,要用 {{ 表示一个 {,同理 }} 表示一个 }。
###这个是因为,python的format的时候,替换的是字符串里的{$}
变量{$}
中的$为int类型或string类型。
int 类型
直接写{}
的话会从左到右按照顺序从0
开始,遇到第n
个{}
就表示{n}
,你也可以手动指定,但是{$}
中的$
必须从0开始,且{$}
的个数不能超过你传入的参数个数N
,其中手动指定的话{$}
中的max($)=N-1
手动指定{$}
中的$值是为了手动指定位置。例如
st = "{1}---{0}"
st.format('第一个数据','第二个数据')
// 输出结果 第二个数据---第一个数据
如果看不懂,也就是说,你把 format当作一个数组看待,也就是说,假如:
tt.format('a','b','c','d')
把format('a','b','c','d')
当作
['a','b','c','d']
这里的{$}
当作数组调用,如{0}
相当于
arr = ['a','b','c','d']
arr[0]
以此类推。
string 类型
对于string类型,格式化字符串操作如下
tt = '{a}---{b}'
tt.format(a='a位置',b='b位置')
// 结果 a位置---b位置
所以,很好的证明上面的报错是怎么来的了,首先识别{之后,后面应该是跟一个数值或字符串,组成一个占位变量,但是这个{
后面是"appId"
一长串东西,也就是{后是以"
符号开始的,明显不合法,所以不要用format做json数据格式化,会出问题。