[英]Python replace forward slash with back slash
我有
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'
帮助! 这让我发疯。
第二个参数应该是一个字符串,而不是一个正则表达式模式:
foo.replace(r'/DIR/', '\\\\MYDIR\\data\\')
您遇到此问题的原因是r""
语法的行为,从Python 文档中获取一些解释
r"\\"" 是由两个字符组成的有效字符串文字:一个反斜杠和一个双引号;r"\\" 不是有效的字符串文字(即使原始字符串也不能以奇数个反斜杠结尾)。具体来说,一个原始字符串不能以单个反斜杠结尾(因为反斜杠会转义后面的引号字符)。
因此,您需要对最后一个参数使用普通的转义字符串。
>>> foo = "/DIR/abc"
>>> print foo.replace(r"/DIR/", "\\\\MYDIR\\data\\")
\\MYDIR\data\abc
我只是在/
前面放了一个r
来改变正斜杠。
inv_num = line.replace(r'/', '-')
两个问题:
'\\\\\\\\MYDIR\\\\data\\\\'
的常规(非原始)文字: '\\\\\\\\MYDIR\\\\data\\\\'
。repr
样式),字符串将带有转义符。 因此, '\\\\\\\\'
只有两个实际的反斜杠。 所以, '\\\\\\\\MYDIR\\\\data\\\\\\\\abc'
实际上是\\\\MYDIR\\data\\\\abc
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.