【问题标题】:parse query string where value has "&"解析值具有“&”的查询字符串
【发布时间】:2020-04-06 17:36:05
【问题描述】:

我正在处理第三方套接字 API,我在其中获取字符串响应并将其转换为 JSON。

示例:

id=1000&name=Foo Bar

我已经尝试过split('&')parse_qsl 以获得结果(作为键、值)。问题是某些记录的值包含&

示例

id=1000&name=Foo Bar & Bros

所以& Bros 将被视为空值。知道如何将其解析为名称键的一部分吗?

【问题讨论】:

    标签: python regex parsing query-string


    【解决方案1】:

    有趣。问题是具有“Foo Bar & Bros”值的字符串不是有效的查询字符串;空格和(文本)&符号需要编码。

    但是,假设 1)您提到的“第三方套接字 API”以这种损坏的形式提供给您,并且 2)文本和符号周围总是有一个空格,您可以这样做:

    def handle_ampersand_values(pseudo_querystring):
        ENCODED_TEXTUAL_AMPERSAND = " AMPERSAND "
        RAW_TEXTUAL_AMPERSAND = " & "
        encoded_ampersands = pseudo_querystring.replace(RAW_TEXTUAL_AMPERSAND, ENCODED_TEXTUAL_AMPERSAND)
        kv_segments = encoded_ampersands.split("&")
        kv_pairs = [segment.split("=") for segment in kv_segments]
        return {k: v.replace(ENCODED_TEXTUAL_AMPERSAND, RAW_TEXTUAL_AMPERSAND) for k, v in kv_pairs}
    
    print(handle_ampersand_values("id=1000&name=Foo Bar & Bros"))
    {'id': '1000', 'name': 'Foo Bar & Bros'}
    

    【讨论】:

      猜你喜欢
      • 2019-05-03
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 2020-01-07
      • 1970-01-01
      相关资源
      最近更新 更多