2 回答
TA贡献1809条经验 获得超8个赞
这个“问题”本质上取决于您如何'PWD'
在代码中调用 的值。就此而言,简单地打印整个字典不会处理反斜杠或 r 字符串,或任何你用来转义反斜杠字符的东西。这就是为什么在调用整个字典时会得到 2 个反斜杠的原因。注意 - 即使将其设为 r 字符串也不会改变这一点,因为 r 字符串会经过并在每个反斜杠后面添加一个额外的反斜杠以自动将其转义。
但是,当您特别调用它时x['myserver']['PWD']
,即会处理该字符串中的转义符,因为它被调用、处理并因此作为单个字符串处理,并且字符串中的所有转义符都将被处理。
总而言之,如果你调用整个字典,甚至是嵌套的内部字典,字符串将不会被处理,所以\\
会出现在你想要的任何地方\
。要获得输出my\password
,请专门调用该值,例如x['myserver']['PWD']
.
TA贡献1799条经验 获得超8个赞
你如何验证它不起作用?使用 print 函数,您可以看到它完全符合您的预期:
x = {
'myserver' : {
'DSN': 'servername',
'DATABASE': 'mydatabase',
'UID': 'myusername',
'PWD': 'my\\password'
}
}
print(x)
print(x['myserver']['PWD'])
输出:
{'myserver': {'DSN': 'servername', 'DATABASE': 'mydatabase', 'UID': 'myusername', 'PWD': 'my\\password'}}
和
my\password
添加回答
举报