[英]How to replace double backslash to single backslash
許多發現是針對python2的,我的情況是python3:
我需要將雙反斜杠替換為單反斜杠
a = 'RXIE-SERVER\\\\MSSQLSERVER_NEW'
這篇文章中的“接受的答案” python3 用單反斜杠替換雙反斜杠在這里不起作用:
那么這里的問題是什么? 非常感謝。
[更新]:
感謝@ShadowRanger 的回復,所以如果在替換操作后打印字符串,它可以正常工作,但是,在我的情況下,我需要連接替換后以生成另一個變量(conn_str),如您所見,它仍然是顯示雙反斜杠。
任何解決方法的線索?
非常感謝。
server = str.replace(data['server'], "\\\\", "\\")
database = data['database']
driver = data['driver']
auth = data['auth']
conn_str = "DRIVER={" + driver + "}; SERVER=" + server + "; Database=" + database + ";" + auth
a = 'RXIE-SERVER\\MSSQLSERVER_NEW'
沒有雙反斜杠。 它有一個轉義的單反斜杠,將它轉義更安全(並且最終將被要求),因此 Python 不認為\\M
是對字符串轉義的嘗試。 如果你這樣做:
print(a)
你會看到它只打印一個反斜杠(因為print
輸出原始數據而不顯示轉義)。
a.replace('\\\\', '')
不起作用的原因是因為它沒有替換單個反斜杠(並且它會為所有反斜杠這樣做); a.replace('\\\\\\\\', '\\\\')
不起作用,因為'\\\\\\\\'
代表實際的雙反斜杠,而您沒有任何這些。
如果輸入從其他來源(不是您所描述的文字),實際上就擁有了一倍反斜杠,然后a.replace('\\\\\\\\', '\\\\')
的實際工作,但REPL的回聲repr
的object,對於str
,這意味着添加反斜杠轉義以使其成為合法的等效str
文字,因此它看起來像雙反斜杠,但只有一個。 如果您將>>> a.replace('\\\\\\\\', '\\\\')
更改為>>> print(a.replace('\\\\\\\\', '\\\\'))
(打印人類-友好的形式,而不是repr
),你會看到它只顯示一個反斜杠。
如果您不喜歡它在代碼中的外觀,請使用原始字符串來消除對轉義的需要:
a = r'RXIE-SERVER\MSSQLSERVER_NEW'
# ^ note prefix that makes it raw
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.