分析值包含“&”的查询字符串

2024-09-27 18:00:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个第三方套接字API,在这里我得到一个字符串响应并将其转换为JSON

示例:

id=1000&name=Foo Bar

我尝试了split('&')parse_qsl以获得结果(作为键、值)。问题是,对于某些记录,该值包含&

示例

id=1000&name=Foo Bar & Bros

因此& Bros将被视为空值。知道如何将其作为名称键的一部分进行解析吗


Tags: 字符串name名称apiidjson示例foo
1条回答
网友
1楼 · 发布于 2024-09-27 18:00:39

有趣。问题是具有“foobar&;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'}

相关问题 更多 >

    热门问题