如何将双反斜杠替换为单反斜杠
How to replace double backslash to single backslash
很多调查结果都是针对python2的,我的情况是python3:
我需要将双反斜杠替换为单反斜杠
a = 'RXIE-SERVER\MSSQLSERVER_NEW'
来自此 post 的 "accepted answer" 在这里不起作用:
那么这里的问题是什么?非常感谢。
[更新]:
感谢@ShadowRanger 的回复,所以如果在替换操作后打印字符串,它可以正常工作,但是,在我的情况下,我需要连接 post-替换以生成另一个变量(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
,对于 str
,这意味着添加反斜杠转义以使其成为合法的、等效的 str
文字,所以它 看起来 就像双反斜杠,但只有一个。如果将 >>> a.replace('\\', '\')
更改为 >>> print(a.replace('\\', '\'))
(打印人性化的形式,而不是 repr
),您会看到它只显示一个反斜杠。
如果您不喜欢它在您的代码中的样子,请使用原始字符串来消除对转义的需要:
a = r'RXIE-SERVER\MSSQLSERVER_NEW'
# ^ note prefix that makes it raw
很多调查结果都是针对python2的,我的情况是python3:
我需要将双反斜杠替换为单反斜杠
a = 'RXIE-SERVER\MSSQLSERVER_NEW'
来自此 post
那么这里的问题是什么?非常感谢。
[更新]:
感谢@ShadowRanger 的回复,所以如果在替换操作后打印字符串,它可以正常工作,但是,在我的情况下,我需要连接 post-替换以生成另一个变量(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
,对于 str
,这意味着添加反斜杠转义以使其成为合法的、等效的 str
文字,所以它 看起来 就像双反斜杠,但只有一个。如果将 >>> a.replace('\\', '\')
更改为 >>> print(a.replace('\\', '\'))
(打印人性化的形式,而不是 repr
),您会看到它只显示一个反斜杠。
如果您不喜欢它在您的代码中的样子,请使用原始字符串来消除对转义的需要:
a = r'RXIE-SERVER\MSSQLSERVER_NEW'
# ^ note prefix that makes it raw