![](/img/trans.png)
[英]Transform a python dict into string compatible with Content-Type:“application/x-www-form-urlencoded”
[英]Converting x-www-form-urlencoded query string to a dict
給定來自 x-www-form-urlencoded 表單數據的查詢字符串。
data[foo]=bar&data[bar]=baz
我想把它翻譯成一個 Python 字典,比如
{'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 將表單數據轉換為多層數組的方式是錯誤的?
目前使用它手動將其轉換為“真實”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
所以,我們最好只使用 flat key=value 格式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.