【问题标题】:Dealing with optional urlparse parameters in url处理 url 中的可选 urlparse 参数
【发布时间】:2017-08-27 03:55:55
【问题描述】:

我的小脚本处理从 url 传递的几个参数;

bright = int(urlparse.parse_qs(urlparse.urlparse(self.path).query).get('bright', None)[0])
loops = int(urlparse.parse_qs(urlparse.urlparse(self.path).query).get('loops', None)[0])
speed = float(urlparse.parse_qs(urlparse.urlparse(self.path).query).get('speed', None)[0])/1000

但是,有些参数是可选的,例如 'bright' 有时不会在 url 中传递,因为它不相关。在这种情况下,它会抛出这个错误;

bright = int(urlparse.parse_qs(urlparse.urlparse(self.path).query).get('bright', None)[0])
TypeError: 'NoneType' object has no attribute '__getitem__'

我能理解.. 它试图解析一些不存在的东西。处理这个问题的最佳方法是什么?有没有办法在尝试解析它们之前首先获取 url 中存在的参数列表?

【问题讨论】:

  • 嗯...为什么不直接遍历从parse_qs 获得的参数字典以查看 url 中存在的可用参数?
  • 听起来像是一个计划……也许我应该试一试……然后睡一会儿……
  • 您可以使用try/except 块捕获None 事件并采取相应措施。
  • 是的,那行得通..谢谢!
  • 不相关:您多次发出相同的调用:urlparse.parse_qs(urlparse.urlparse(self.path).query) - 执行一次,将其存储在变量中,然后重复使用!

标签: python urlparse


【解决方案1】:

为什么不直接遍历从parse_qs() 获得的参数字典以查看 url 中存在的可用参数?

此外,您可以使用 try/except 块捕获 None 事件,并采取相应措施。

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 2018-02-03
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多