python - 为什么双反斜杠在python字典中不起作用
问题描述
我有一个 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
解决方案
这个“问题”本质上'PWD'
取决于您如何在代码中调用 's 值。就此而言,简单地打印整个字典将不会处理反斜杠或 r 字符串,或者您用来转义反斜杠字符的任何内容。这就是为什么当你调用整个字典时你会得到 2 个反斜杠。注意 - 即使将其设为 r 字符串也不会改变这一点,因为 r 字符串会通过并在每个反斜杠后面添加一个额外的反斜杠以自动转义它。
但是,当您专门调用它 iex['myserver']['PWD']
时,该字符串中的转义将被处理,因为它被调用、处理并因此被作为单个字符串处理,并且字符串中的所有转义都将被处理。
总而言之,如果你调用整个字典,甚至是嵌套的内部字典,字符串将不会被处理,所以\\
会出现在你想要的任何地方\
。要获取输出my\password
,请专门调用该值,例如x['myserver']['PWD']
.
推荐阅读
- android - 如何根据 Android 项目构建类型(生产与暂存)配置哨兵环境?
- borland-c++ - TEdit - 如果剪贴板包含特定字符串,则忽略粘贴操作
- javascript - firebase.auth().signInAnonymously() 如何维护会话?
- vba - 如何为带有幻灯片时间和标题的 PowerPoint 视频制作生成 YouTube 索引?
- sql - 如何为已创建的 PostgreSQL 表创建外键?
- tcp - tcp_retransmit_skb 的 kprobe。而不是 tcp_retransmit_skb @tcp_states,我想 kprobe __napi_schedule
- java - 过滤器不响应意图
- excel - 我需要使用 vba 将链接发布到 Excel 表中
- arrays - Array 2d VBA 可选元素
- java - SAP Hybris 自行关闭