【问题标题】:KeyError: Backslash in Python Dictionary KeyKeyError:Python 字典键中的反斜杠
【发布时间】:2014-01-23 19:47:45
【问题描述】:

我正在尝试在 Python 中从使用 json.loads() 创建的字典中检索值,该字典来自请求对象的 .text,它使用:

'\/' 

在某些字典键中作为分隔符。字典是另一个不受我控制的程序的标准输出。

如果我尝试使用:

dictionary['text\/text']

它生成一个KeyError并说没有

'text\\/text'

键。注意它插入的双反斜杠。

我试过了:

r'text\/text', 'text\\/text', 'text'+chr(92)+chr(47)+'text', etc

我似乎无法让它工作。必须有某种方法可以做到这一点,而不必解析整个字典的文本并替换所有出现的“/”。有什么想法吗?

edit:这对我来说是一个愚蠢的错误。我正在从 request.text 中读取键值,其中在正斜杠之前打印了一个额外的反斜杠。 Martijn Pieters 的评论直击问题所在。

【问题讨论】:

  • dictionary.keys() 打印什么?
  • 键的表示使用双斜杠,因为 Python 在将字符串回显给您时总是会转义转义码。该值完全正确。
  • 你试过'text/text'了吗?
  • 马丁·彼得斯,谢谢。你想通了。我假设原始源使用 '\/' 作为分隔符,但它实际上是使用 '/' 并且 Python 在表示中插入了 '\'。
  • 如果打印表示中有反斜杠,我会感到非常惊讶,因为正斜杠不被认为是特殊的。你在哪里看到反斜杠?

标签: python dictionary backslash keyerror


【解决方案1】:

我在 Idle (2.7.6) 中尝试过,它看起来有效:

>>> d={'text\/text':'test'}
>>> d
{'text\\/text': 'test'}
>>> d['text\/text']
'test'
>>> 

【讨论】:

  • 但这并不能真正帮助解决 OP 的问题。
  • @jmu303:是的,我试图重现这个问题,但发现我做不到,所以我认为这可能很有价值。我知道您来自哪里,但我只是不确定如何使我的尝试回答(更多)具有建设性。
猜你喜欢
  • 2019-12-23
  • 2021-08-11
  • 2022-01-23
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 2021-09-02
相关资源
最近更新 更多