如何将双反斜杠替换为单反斜杠

2024-05-15 07:43:55 发布

您现在位置:Python中文网/ 问答频道 /正文

许多发现都是针对python2的,我的案例是python3:

我需要把双反斜杠换成单反斜杠

a = 'RXIE-SERVER\\MSSQLSERVER_NEW'

这篇文章的“公认答案”python3 replacing double backslash with single backslash在这里不起作用:

enter image description here

那么这里的问题是什么?多谢各位

[更新]:

感谢@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

enter image description here


Tags: authdataserverdriverconndatabasepython3案例
1条回答
网友
1楼 · 发布于 2024-05-15 07:43:55
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

相关问题 更多 >