【问题标题】:Get value from query string in Python 3 without the [' '] showing up in the value从 Python 3 中的查询字符串中获取值,而不在值中显示 ['']
【发布时间】:2017-09-22 04:45:41
【问题描述】:

我在 Python 3 http 服务器中有以下代码解析出一个 URL,然后解析出一个查询字符串:

parsedURL = urlparse(self.path)
parsed = parse_qs(parsedURL.query)

说在这种情况下parsedURL.query 将变成x=7&=3。我想取出 7 和 3 并将它们设置为等于变量 x 和 y。我都试过了

x = parsed['x']
y = parsed['y']

x = parsed.get('x')
y = parsed.get('y')

这两种解决方案都提出了 x = ['7'] 和 y = ['3'],但我不想要括号和单引号,我想要 只是7 和 @ 987654329@,我希望它们是整数。如何取出值并去掉括号/引号?

【问题讨论】:

  • parse_qsl 可能更适合您(parse_qs 在内部使用它,并将值累积到列表中)

标签: python-3.x http parsing query-string urllib


【解决方案1】:

简单地说:

x = int(parsed['x'][0])
y = int(parsed['y'][0])

x = int(parsed.get('x')[0])
y = int(parsed.get('y')[0])

达到你的目的?你当然应该有合适的验证检查,但你要做的就是将返回数组的第一个元素转换为int,这样这段代码就可以了。

这是因为get() 返回一个值数组(我猜!)所以如果你尝试解析url?x=1&x=2&x=foo 你会得到一个类似['1', '2', 'foo'] 的列表。通常,查询字符串中每个变量只有一个(或零个)实例,因此我们只需使用[0] 获取第一个条目。

注意documentation for parse_qs() 说:

数据以字典形式返回。字典键是唯一的查询变量名称,值是每个名称的值列表

【讨论】:

  • 天哪,这太简单了,但是非常感谢您!你能解释一下[0] 的作用吗?这一定是它起作用的原因,因为我只记得我尝试过做int 的事情。如果你看不出来,我真的是 python 新手哈哈
  • 好的,加了一点文字。
  • 完美!我会将其设置为首选答案,但您回答得如此之快,以至于我还没有完全接受。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
相关资源
最近更新 更多