在python中用\替换\\

在python中用\替换\\,python,Python,我有一个字符串,其文件夹路径如下所示 >>> path '\\\\sdgte\\ssdfdaa\\asfdsf' 我想将\\替换为\。我试图更换,但无法按以下方式工作 >>> path.replace('\\','\') File "<input>", line 1 path.replace('\\','\') ^ SyntaxError: EOL while scanning string litera

我有一个字符串,其文件夹路径如下所示

>>> path
'\\\\sdgte\\ssdfdaa\\asfdsf'
我想将\\替换为\。我试图更换,但无法按以下方式工作

>>> path.replace('\\','\')
File "<input>", line 1
path.replace('\\','\')
                     ^
SyntaxError: EOL while scanning string literal
路径。替换(“\\”,“\\”) 文件“”,第1行 路径。替换(“\\”,“\\”) ^ SyntaxError:扫描字符串文字时下线 非常感谢您的帮助。

字符串中没有“\\”。如果您打印它而不是查看它的表示形式,您将看到字符串实际包含的值

>>> print path
\\sdgte\ssdfdaa\asfdsf

你可能不需要更换任何东西
\
是python中的一个特殊字符,在字符串文本中表示“下一个字符”。也就是说,如果您想要一个包含反斜杠的字符串,您可能需要键入
“\\”


您应该使用转义字符“\”来转义字符串中的每个\

path.replace('\\\\','\\')

您遇到的问题是\是转义字符。而不是把它当作

将“\\”替换为“\”

python将您的参数解读为“将单个反斜杠字符替换为单个引号字符”。之所以会出现这样的错误,是因为python忽略了第二个单引号,因为它认为这是您希望它做的

你想要的是:

path.replace('\\\\', '\\')

您必须转义所有反斜杠,因为它们是特殊的。

得到SyntaxError的原因与看到双反斜杠的原因相同:反斜杠是“转义”字符,用于指示特殊序列的开始,如换行符的“\n”,否则很难用字符串表示。因此,反斜杠字符本身必须用双反斜杠表示

另一方面,如果不需要在字符串中使用任何转义序列,则可以在字符串前面加上“r”,而不是将反斜杠加倍:

路径.替换(r'\\',r'\')


“r”表示“原始”字符串。

r'\\'=='\\\'
r'\'
引发一个语法错误。正如您所看到的,我在发布之前没有进行测试。:)我得说,这个结果让我很惊讶。反斜杠后面的任何字符都可以使用,但我想没有办法在原始字符串中包含一个终端反斜杠。请参阅。我尝试过这样做,但它只替换第一次出现的字符。>>>路径'\\\\server path\\parent folder\\folder1'>>>path.replace(r'\\','\\')'\\server path\\parent folder\\folder1',因为正如其他人所指出的,字符串中只有一个真正的双反斜杠实例(开头的那个)。Python只是为了显示而将它们加倍。这是
print path
print repr(path)
之间的区别——只需在交互式shell中键入
path
就像
print repr(path)
。(或者,
print(repr(path))
在Python 3中。)现在在您的系统上尝试:
>>len('\\')
。我尝试了,但它只替换了第一次出现的内容。>>>路径'\\\\server path\\parent folder\\folder1'>>>path.replace('\\\\','\\')'\\server path\\parent folder\\folder1'
path.replace('\\\\', '\\')
path.replace(r'\\', '\\')