Python字典键值中的反斜杠引发KeyError异常

3

我正在尝试使用Python从一个使用json.loads()创建的字典中检索值,该字典源自于一个使用以下代码的requests对象:

'\/' 

作为字典键中的分隔符。该字典是另一个我无法控制的程序的标准输出结果。
如果我尝试使用:
dictionary['text\/text']

它会产生一个KeyError,并显示没有此项。
'text\\/text'

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

我已经尝试过:

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

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

编辑:这是我犯下的一个愚蠢错误。我正在从请求文本中读取关键值,在其中打印了额外的反斜杠。Martijn Pieters的评论直接指出了问题所在。


7
dictionary.keys() 会打印出字典中的所有键值。 - Martijn Pieters
2
键的表示采用双斜杠,因为Python在将字符串回显时总是转义转义代码。值完全正确。 - Martijn Pieters
5
你尝试过使用 'text/text' 吗? - Martijn Pieters
1
Martjin Pieters,谢谢。你解决了它。我假设原始来源使用'/'作为分隔符,但实际上它使用的是'/',而Python在表示中插入了''。 - user3229320
3
如果在打印的表现中出现反斜线,我会感到相当惊讶,因为前斜杠并不被视为特殊字符。你在哪里看到了反斜线? - user2357112
显示剩余2条评论
1个回答

0

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

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

3
但这并不能真正帮助OP解决问题。 - jayelm
@jmu303:是的,我试图重现这个问题,但我发现无法重现,所以我觉得这可能很有价值。我明白你的想法,只是不知道如何使我的尝试性答案更具建设性。 - Zach Young

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接