【问题标题】:Python dpath.util.get Empty string keys ErrorPython dpath.util.get 空字符串键错误
【发布时间】:2019-03-08 06:19:49
【问题描述】:

我读入了一个简单的 JSON 文本文件,它解析为一个字典就好了。

>>> data.keys()
dict_keys(['metadata', 'value'])

我想获取特定元素,我通常使用 dpath 包。但是,在这种情况下,我收到一个错误,这似乎暗示我

dpath.util.get(data, 'metadata', separator='..')
InvalidKeyName: Empty string keys not allowed without dpath.options.ALLOW_EMPTY_STRING_KEYS=True

我没有看到任何空字符串键,只有上面的两个。我可以使用其他一些看似随机的 JSON 文本文件进行重现,但对其他人来说效果很好。知道这里发生了什么吗?

【问题讨论】:

  • 您是否尝试调试库代码?它必须明确它不喜欢什么。
  • idownvotedbecau.se/nomcve 。如果你不给我任何具体的工作,我只能猜测。

标签: python json dpath


【解决方案1】:

Searching this error message in the library's codebase 找到 dpath/path.py:88

    for (k, v) in iteritems:
        if issubclass(k.__class__, (string_class)):
            if (not k) and (not dpath.options.ALLOW_EMPTY_STRING_KEYS):
                raise dpath.exceptions.InvalidKeyName("Empty string keys not allowed without "
                                                      "dpath.options.ALLOW_EMPTY_STRING_KEYS=True")

因此,当您的数据结构有空键时会引发此错误。

【讨论】:

  • 我分享了我的 data.keys()。可以看到有两个键,没有空键。这就是令人困惑的地方。谢谢!
  • @Max 层次结构中的某个位置可能较低。也许 lib 会浏览整个层次结构,我没有费心去寻找。如果你调试代码,你会看到它到底是什么问题。
  • 谢谢,看来这是一个已知问题,不确定它是否得到修复github.com/akesterson/dpath-python/issues/73
  • @Max 您的错误看起来不像该票证中的任何内容。我之前的说法成立。如果没有重现错误的方法,我也无话可说。
  • 这是问题所在。我有一个以空字符串作为键值的子元素。抱歉,问题中没有很好地描述。感谢您的观看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 2014-10-23
  • 2012-05-11
  • 2010-09-16
相关资源
最近更新 更多