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
添加回答
舉報