2011-07-29 88 views
3

給定來自x-www-form-urlencoded表單數據的查詢字符串。將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']} 

這不是世界末日。我可以很容易地將字典中的值作爲data[bar]或其他來調用。我想我有點驚訝,沒有一個模塊執行這種解析,至少我能找到。有人知道嗎?

獎勵問題:是否有原因爲什麼這樣的庫在Python中不存在,例如, PHP將表單數據轉換爲多層數組在某種程度上是錯誤的?

回答

-2
  • PHP自動將索引表單變量解碼爲深層數組。 PHP doc
  • 這是php功能,不是http或web標準。
  • 由於HTTP RFC中沒有定義常見的「數組」結構。
  • ,並使用[]或鑰匙串等非字母數字字符是一個真正的壞習慣

所以,我們最好只是用平鍵=值格式

  • 或者嘗試用戶定義數據格式(如PHP所做的)爲客戶端和服務器端編碼/解碼多層次數組。
  • 如果你提供這個用戶定義格式的http api,你必須向你的客戶解釋很多。