前两天处理字符串的时候,因为需要做一些字符转义,比如说要把原字符串中所有的单引号前面加个反斜杠,给反斜杠前面再加个反斜杠啥的。一开始想着是这么写:
s.replace("'", "\\'").replace("\\", "\\\\")
后来觉得反斜杠太多了,实在不太美观,就想着能不能用raw string来代替:
s.replace(r"'", r"\'").replace(r"\", r"\\")
但是这个是会报错的,而且还是语法错误,SyntaxError: unexpected character after line continuation character。
后来翻了一下文档,发现raw string并不像我想当然的一样,会原封不动地展现字符串原始的模样(或许是因为名字具有误导性)。事实上,raw string仍然会进行转义。有一句话概括得很好:
When an ‘r’ or ‘<