目前,每当我需要解析查询字符串时,我最初都在做
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
最小值:如果只有一个值,则为值,如果有多个值,则为列表?
这样做的功能不应该太难,但我很好奇是否有一个库可以做到这一点,所以我不需要重新发明轮子。
答案 0 :(得分:2)
一般来说,如果您有这样的字典query
,您可以随时
query = {[(k, v[0] if len(v) == 1 else v) for k, v in query.iteritems()]}
但是,我真的不喜欢这段代码,因为它只会产生后来不直观的东西。