许多发现都是针对python2的,我的案例是python3:
我需要把双反斜杠换成单反斜杠
a = 'RXIE-SERVER\\MSSQLSERVER_NEW'
这篇文章的“公认答案”python3 replacing double backslash with single backslash在这里不起作用:
那么这里的问题是什么?多谢各位
[更新]:
感谢@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
没有双反斜杠。它有一个转义的单反斜杠,转义它更安全(并且最终会被要求),这样Python就不会认为
\M
是一个字符串转义的尝试。如果您这样做:您将看到它只打印一个反斜杠(因为
print
输出原始数据而不显示转义)a.replace('\\', '')
不起作用的原因是它用零替换了单个反斜杠(对于所有反斜杠都是这样)a.replace('\\\\', '\\')
不起作用,因为'\\\\'
表示实际的双反斜杠,而您没有这些如果您的输入来自其他来源(不是您描述的文字),并且实际上有一个双反斜杠,那么
a.replace('\\\\', '\\')
实际上有效,但是REPL的回声是对象的repr
,对于str
,这意味着添加反斜杠转义,使其成为合法的、等效的str
文字,所以它看起来像一个双反斜杠,但只有一个。如果将>>> a.replace('\\\\', '\\')
更改为>>> print(a.replace('\\\\', '\\'))
(打印人性化表单,而不是repr
),您将看到它只显示一个反斜杠如果您不喜欢代码中的外观,请使用原始字符串来消除转义的需要:
相关问题 更多 >
编程相关推荐