清理解析url查询

时间:2015-05-18 13:00:51

标签: python urllib

目前,每当我需要解析查询字符串时,我最初都在做

 from urllib import parse

 path = parse.urlparse(self.path)
 query = parse.parse_qs(path.query)

 value = query[name][0]

但是我不喜欢[0]点缀在我的代码周围 - 它感觉错误以某种难以确定的方式,所以我意识到我能做到

 from urllib import parse

 path = parse.urlparse(self.path)
 query = dict(parse.parse_qsl(path.query))

 value = query[name]

这样做的好处是可以删除[0],但是它有可能丢弃多个值(对于我的应用程序来说应该没问题,不管怎样都不应该接收多个值。)

是否有更简洁的方法来解析urlencoded字符串,它会为您提供dict最小值:如果只有一个值,则为值,如果有多个值,则为列表?

这样做的功能不应该太难,但我很好奇是否有一个库可以做到这一点,所以我不需要重新发明轮子。

1 个答案:

答案 0 :(得分:2)

一般来说,如果您有这样的字典query,您可以随时

query = {[(k, v[0] if len(v) == 1 else v) for k, v in query.iteritems()]}

但是,我真的不喜欢这段代码,因为它只会产生后来不直观的东西。