请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于filter

请问这条代码有问题吗,我是3.7的python,打断点看前面可以提取出https开头的url,但是到这里过滤一下就为none了。

# all_urls = filter(lambda x: True if x.startswith("https") else False, all_urls)


正在回答

3回答

https://img1.sycdn.imooc.com//szimg/5ebe5813094c328e13480831.jpg 你这里看起来对象不是none啊

0 回复 有任何疑惑可以回复我~
  • 提问者 慕雪0299990 #1
    解决了,返回的这是一个迭代对象,需要用转化成list。谢谢老师了哈。
    回复 有任何疑惑可以回复我~ 2020-05-15 18:13:33
  • bobby 回复 提问者 慕雪0299990 #2
    好的,
    回复 有任何疑惑可以回复我~ 2020-05-17 09:22:01
提问者 慕雪0299990 2020-05-14 18:02:15

1、执行filter之前:

https://img1.sycdn.imooc.com//szimg/5ebd16ca09f083f722240609.jpg

2、到filter那个断点后:

https://img1.sycdn.imooc.com/szimg/5ebd170a0858ace621171065.jpg

0 回复 有任何疑惑可以回复我~
bobby 2020-05-14 13:25:41
all_urls = ["https://baidu.com", "http://www.baidu.com", "https://www.taobao.com"]
all_urls = filter(lambda x: True if x.startswith("https") else False, all_urls)
for url in all_urls:
    print(url)

没问题

0 回复 有任何疑惑可以回复我~
  • 提问者 慕雪0299990 #1
    all_urls = response.xpath('//a/@href').extract()
      all_urls = [parse.urljoin(response.url, url) for url in all_urls]
      all_urls = filter(lambda x: True if x.startswith("https") else False, 
                             all_urls)
    我是这样的,在filter以前一切都正常,我把截图放下头哈
    回复 有任何疑惑可以回复我~ 2020-05-14 17:58:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信