簡體   English   中英

如何將雙反斜杠替換為單反斜杠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM