python3 format()构造URL报错问题(已解决)

今天遇到一个特神奇的事情,在构造URL的时候, format()函数居然不能传入两个参数。不知道是不是环境的问题。

1.不解代码

tag=input('请输入岗位:')
urls = ['https://fe-api.zhaopin.com/c/i/sou?start={}&pageSize=90&cityId=489&salary=0,0&kw='+tag+'&kt=3'.format(i) for i in range(1,5)]
for url in urls:
    print(url)

输出结果:
在这里插入图片描述

  • 首先 format函数没有帮我将 i 放到 {} 中
  • 整个的URL没有帮我构造好,假如现在requests请求,肯定会出错。

解决方法!!

city=input('请输入城市')
for i in range(1,6):
    urls = 'https://fe-api.zhaopin.com/c/i/sou?start={}&pageSize=90&cityId=489&salary=0,0&kw={}&kt=3'.format(i,city)
    print(urls)

在这里插入图片描述

for放在外面和放在里面到底有什么不同呢? 之后在解决。今天来debug一下,看看输出结果你就知道了。
for循环放在外面,如下代码:

city=input('请输入岗位:')
for i in range(1,3):
    urls = 'start={}&pageSize=900&kw={}&kt=3'.format(i,city)
    print(urls)

在这里插入图片描述
debug后输出思路正常


for循环放在里面,代码如下:

tag=input('请输入岗位:')
urls = ['sou?start={}&pageSize=9,0&kw='+tag+'&kt=3'.format(str(i)) for i in range(1,3)]
for url in urls:
    print(url)

在这里插入图片描述
个人思路如下:
0、输入python回车之后
1、urls列表中将 tag=python 赋值给 tag ,在for循环的作用下赋值了两次,之后整个的sou?start={}&pageSize=9,0&kw=python&kt=3 被看成是一个整体
2、此时,继续for循环,将1和2赋值给变量 i ,但是此时的url构造已经是一个完整的url ,前面的tag赋值之后,整个的sou?start={}&pageSize=9,0&kw=python&kt=3 已经被看成是一个整体,里面的 {} 不能被单独的识别出来。所以此时的format()函数找不到 {} ,因此不能将 i 赋值 到 {} 上。

解决方法!!

tag=input('请输入岗位:')
urls = ['sou?start={}&pageSize=9,0&kw={}&kt=3'.format(str(i),tag) for i in range(1,3)]
for url in urls:
    print(url)

将tag也变成format函数的一个参数,这样的debug之后如下图:

1、输入python回车
在这里插入图片描述
2、
在这里插入图片描述
3、
在这里插入图片描述
4、
在这里插入图片描述
5、
在这里插入图片描述
个人思路如下:
1、输入python回车之后,变量tag得到python。此时的urls还没有完全构造好,因为 tar 还没有赋值到 第二个{}中,和之前的区别就在这里
2、接下来进行for 循环,for循环两次将tar赋值到第二个{}中,因为tar在 第二个 format(str(i),tar)。此时的urls也是还没有构造好,因为format()里面还有参数。
3、之后在进行两次循环,将 i 赋值到第一个 {} 中。
4、之后输出url。成功构造和赋值。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值