gpt4 book ai didi

python-3.x - 如何在 jmespath 搜索查询的字符串文字键内转义 '@' 符号

转载 作者:行者123 更新时间:2023-12-05 08:51:59 44 4
gpt4 key购买 nike

我正在使用 jmespath 搜索 JSON 片段,其中一个 JSON 键包含一个“@”符号。由于“@”符号是保留字符,jmespath 会阻塞。我尝试了很多方法来成功转义“@”符号。如何在我的 jmespath 搜索中转义“@”符号?

例子:

json = {"@name": "Bob", "address": "123 Main St"}

jmespath.search("@name", json)

错误信息:

{ParseError} Unexpected token: name: Parse error at column 1, token "name" (UNQUOTED_IDENTIFIER), for expression: "@name" ^

我也为上述 jmespath 查询尝试了以下变体,但出现了同样的错误:

jmespath.search("!@name", json)
jmespath.search("\@name", json)
jmespath.search("`@`name", json)
jmespath.search("\"@\"name", json)

最佳答案

我找到了逃避它的正确方法:

jmespath.search("\"@name\"", json)

根据我使用 JMESPath 的经验,对象的一些属性需要用双引号引起来,例如,如果我有一个对象 {"0": "txt", "name": "txt2"},我可以使用此命令访问名称值 @.name 但对于 0 值,我需要在零周围加上双引号。我不能这样做 @.0(它不起作用),但是添加双引号可以 @."0"。这可能就是 JMESPath 不允许双引号定义字符串的原因。所以这与您在属性中放置某些特殊字符的情况相同。在Python中,查询已经是一个字符串,所以你需要添加额外的引号并将内引号转义\"来解决这个问题。

在 JavaScript 中,您可以使用 '"@name"' 获得相同的结果。

关于python-3.x - 如何在 jmespath 搜索查询的字符串文字键内转义 '@' 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57897077/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com