为了账号安全,请及时绑定邮箱和手机立即绑定

为什么双反斜杠在 python 字典中不起作用

为什么双反斜杠在 python 字典中不起作用

红糖糍粑 2023-04-18 10:54:09
我有一个 python 字典,其中包含这样的连接详细信息:x = {  'myserver' : {    'DSN': 'servername',    'DATABASE': 'mydatabase',    'UID': 'myusername',  'PWD': 'my\\password'    }}我期望值PWD是my\password但我得到my\\password了。作为一个独立的字符串,即pwd = 'my\\password'# returns my\password所以我尝试了这个(但仍然不起作用):pwd = 'my\\password'x = {  'myserver' : {    'DSN': 'servername',    'DATABASE': 'mydatabase',    'UID': 'myusername',  'PWD': pwd    }}还尝试了四个反斜杠\\\\,只尝试了一个反斜杠\(出错),尝试r在字符串值前面加上它们的组合,仍然没有...本质上期望字典的输出显示/保持/指向my\password而不是my\\password
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

这个“问题”本质上取决于您如何'PWD'在代码中调用 的值。就此而言,简单地打印整个字典不会处理反斜杠或 r 字符串,或任何你用来转义反斜杠字符的东西。这就是为什么在调用整个字典时会得到 2 个反斜杠的原因。注意 - 即使将其设为 r 字符串也不会改变这一点,因为 r 字符串会经过并在每个反斜杠后面添加一个额外的反斜杠以自动将其转义。

但是,当您特别调用它时x['myserver']['PWD'],即会处理该字符串中的转义符,因为它被调用、处理并因此作为单个字符串处理,并且字符串中的所有转义符都将被处理。

总而言之,如果你调用整个字典,甚至是嵌套的内部字典,字符串将不会被处理,所以\\会出现在你想要的任何地方\要获得输出my\password,请专门调用该值,例如x['myserver']['PWD'].


查看完整回答
反对 回复 2023-04-18
?
守着星空守着你

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


查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信