给出来自x-www-form-urlencoded表单数据的查询字符串。
data[foo]=bar&data[bar]=baz
我想把它翻译成Python dict,例如
{'data': {'foo': 'bar', 'bar': 'baz'}}
或接近那个。基本上,类似于在PHP的$ _POST变量中处理此表单数据的方式:
Array
(
[data] => Array
(
[foo] => bar
[bar] => baz
)
)
但是urlparse.parse_qs()只是给了我:
{'data[bar]': ['baz'], 'data[foo]': ['bar']}
这不是世界末日。我可以轻松地将dict中的值称为data[bar]
或其他任何内容。我想我只是有点惊讶,没有一个模块执行这种解析,至少我能找到。有人知道吗?
奖金问题:是否存在原因为什么Python中不存在这样的库,例如PHP将表单数据转换为多层数组是错误的吗?
答案 0 :(得分:0)
目前正在使用它手动将其转换为“真正的”python dict
。
但是,可能还有一些未知的问题我还没有遇到过。
from urllib.parse import parse_qs
str_raw_data = str(bytes_raw_data, 'utf-8') # bytes to string
formatted_data_dict = parse_qs(str_raw_data)
data = {}
for k, v in formatted_data_dict.items():
if len(v) == 1:
data[k] = v[0]
else:
data[k] = v
return data
答案 1 :(得分:-3)
所以,我们最好只使用flat key = value format