跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教 Python 中 xml 转 dict 格式–不懂就问
未分類
19 7 月 2020

请教 Python 中 xml 转 dict 格式–不懂就问

请教 Python 中 xml 转 dict 格式–不懂就问

資深大佬 : maobukui 8

现有 a 变量,

a = “”” <xml> <fee_type></fee_type> <coupon_fee></coupon_fee> <coupon_fee></coupon_fee> </xml> “””

因为“coupoen_fee”重复了,通过 xmltodict 转的 dict 格式为 {‘fee_type’: ‘CNY’, ‘coupon_fee’: [’10’, ‘100’]}

期待的格式是 {‘fee_type’: ‘CNY’, ‘coupon_fee’: ’10’, ‘coupon_fee’: ‘100’}

目的是得到 coupon_fee=10&coupon_fee=100&fee_type=CNY

有啥好的办法吗?

大佬有話說 (10)

  • 資深大佬 : sujin190

    dict 的 key 啥时候能重复了,你这是犯傻了还是想要逆天无视数据结构规则了

  • 資深大佬 : sikariba

    dict 的 key 是 hash 的,不能重复,你只能从 dict 序列化到 query string 的这一部分想办法

  • 資深大佬 : cassidyhere

    你可以用 collections.ChainMap,或者参考 flask 里的 MultiDict:
    >>> d = MultiDict([(‘a’, ‘b’), (‘a’, ‘c’)])
    >>> d
    MultiDict([(‘a’, ‘b’), (‘a’, ‘c’)])
    >>> d[‘a’]
    ‘b’
    >>> d.getlist(‘a’)
    [‘b’, ‘c’]

  • 資深大佬 : lake325

    为何要 coupon_fee=10&coupon_fee=100&fee_type=CNY ? 这种两个重复的 key 看着不另类吗?

  • 資深大佬 : fonlan

    或者你就手动写解析,转成{‘fee_type’: ‘CNY’, ‘coupon_fee’: [’10’, ‘100’]}这样,既然是同名的 key 不如把值放入一个 list

  • 資深大佬 : bnm965321

    @lake325 这种格式是 query string 规范,是正常的。但是可以用 urllib 直接从上面的 dict 转换

  • 主 資深大佬 : maobukui

    [解决了]
    抱歉可能我表述不太清楚,再简单分享下。
    [诉求]
    现有 xml 字符串 a = “”” <xml> <fee_type></fee_type> <coupon_fee></coupon_fee> <coupon_fee></coupon_fee> </xml> “””
    期望得到 coupon_fee=10&coupon_fee=100&fee_type=CNY
    [实现方式]
    仍然 xml → dict (此时值有列表)
    通过 for 循环判定值为列表情况,便利后,通过 key + “= ” + value 拼接了字符串。
    感谢。

  • 主 資深大佬 : maobukui

    @sikariba 感谢

  • 主 資深大佬 : maobukui

    @lake325 哈哈,是的!详见微信支付签名 MD5 校验,就是这样

  • 資深大佬 : wdf86

    xmltodcit 这个库可以了解下

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具