【发布时间】: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