Python将斜杠替换为反斜杠
我有
foo = '/DIR/abc'
我想把它转换成
bar = '\\MYDIR\data\abc'
所以,我在Python中这样做:
>>> foo = '/DIR/abc'
>>> bar = foo.replace(r'/DIR/',r'\\MYDIR\data\')
File "<stdin>", line 1
bar = foo.replace(r'/DIR/',r'\\MYDIR\data\')
^
SyntaxError: EOL while scanning string literal
但是,如果我试着通过输入 bar = foo.replace(r'/DIR/',r'\\MYDIR\data\\')
来转义最后一个反斜杠,那我就得到了这个怪物:
>>> bar2
'\\\\MYDIR\\data\\\\abc'
救命!这让我快疯了。
5 个回答
3
你遇到这个问题是因为 r""
这种写法的特性。这里引用一下 Python 文档 的解释。
r"\"" 是一个有效的字符串,它由两个字符组成:一个反斜杠和一个双引号;而 r"\" 不是一个有效的字符串(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会让后面的引号失效)。
所以你需要为最后一个参数使用一个普通的转义字符串。
>>> foo = "/DIR/abc"
>>> print foo.replace(r"/DIR/", "\\\\MYDIR\\data\\")
\\MYDIR\data\abc
4
我只是在斜杠前面加了一个 r
,这样就改变了这个斜杠的用法。
inv_num = line.replace(r'/', '-')
7
第二个参数应该是一个字符串,而不是正则表达式模式:
foo.replace(r'/DIR/', '\\\\MYDIR\\data\\')