python replace single backslash with double backslash
在python中,我尝试将单反斜杠(" \\\\")替换为双反斜杠(" \\\\")。我有以下代码:
1 | directory = string.replace("C:\\Users\\Josh\\Desktop\\20130216","","\") |
但是,这会给出一条错误消息,表明它不喜欢双反斜杠。谁能帮忙吗?
这里不需要使用
1 2 3 4 | >>> strs = r"C:\\Users\\Josh\\Desktop\\20130216" ^ | notice the 'r' |
下面是上述字符串的
但是,实际上实际的字符串仅包含
1 2 3 4 5 6 7 8 | >>> strs 'C:\\\\Users\\\\Josh\\\\Desktop\\\\20130216' >>> s = r"f\\o" >>> s #repr representation 'f\\\\o' >>> len(s) #length is 3, as there's only one `'\'` 3 |
但是当您要打印此字符串时,输出中将不会得到
1 2 | >>> print strs C:\\Users\\Josh\\Desktop\\20130216 |
如果希望字符串在
1 2 3 | >>> new_strs = strs.replace('\\\','\\\\\\\') >>> print new_strs C:\\\\Users\\\\Josh\\\\Desktop\\\\20130216 |
1 2 | >>> new_strs 'C:\\\\\\\\Users\\\\\\\\Josh\\\\\\\\Desktop\\\\\\\\20130216' |
让我简单明了。让我们在python中使用re模块来转义特殊字符。
Python脚本:
1 2 3 4 | import re s ="C:\\Users\\Josh\\Desktop" print s print re.escape(s) |
输出:
1 2 | C:\\Users\\Josh\\Desktop C:\\\\Users\\\\Josh\\\\Desktop |
说明:
现在观察一下re.escape函数如何转义给定字符串中的特殊字符,我们能够在每个反斜杠之前添加另一个反斜杠,最后输出结果是双反斜杠,即所需的输出。
希望这对您有所帮助。
使用转义字符:
在python中,
使用示例字符串,您会注意到,当将
另一种选择是通过在字符串前添加
来通知python您的整个字符串不得使用
这是一个"原始"字符串,在需要使用大量反斜杠(例如正则表达式字符串)的情况下非常有用。
如果您仍然希望将单个
请注意,我在上面的最后两个字符串中没有使用
结束该字符串
为什么Python的原始字符串文字不能以单个反斜杠结尾?
https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-—-backslashes-are-escape-characters/
您的情况可能是语法错误,
您可以将行更改为:
1 | directory = str(r"C:\\Users\\Josh\\Desktop\\20130216").replace('\\\','\\\\\\\') |
为您提供正确的以下输出:
1 | C:\\\\Users\\\\Josh\\\\Desktop\\\\20130216 |
您可以使用
1 | os.path.abspath(path_with_backlash) |
它用
返回路径
反斜杠表示特殊的转义字符。因此,
1 | directory=path_to_directory.replace("\","\\\\\") |
给出源字符串,使用os.path可能更有意义,但这是一个字符串解决方案;
1 2 3 | >>> s=r"C:\\Users\\Josh\\Desktop\\\\20130216" >>> '\\\\\\\'.join(filter(bool, s.split('\\\'))) 'C:\\\\\\\\Users\\\\\\\\Josh\\\\\\\\Desktop\\\\\\\\20130216' |
请注意,
使用:
1 | string.replace(r"C:\\Users\\Josh\\Desktop\\20130216","\","\") |
转义