我曾经碰到过一个东西,想知道它是一个Python的“虫子”还是至少是一个不适合吃的东西。我很好奇是否有人知道这种行为的任何理由。我刚想到读“像Python一样的代码”,到目前为止已经很享受了。我只熟悉Python的2.x行。
原始字符串是以r为前缀的字符串。这很好,因为我可以在正则表达式中使用反斜杠,而且我不需要在任何地方都使用反斜杠。在Windows上编写一次性脚本也很方便,所以我也可以在那里使用反斜杠。(我知道我也可以使用正斜杠,但一次性脚本通常包含从Windows中其他位置粘贴的内容。)
太好了!当然,除非您真的希望字符串以反斜杠结尾。在“原始”字符串中不可能这样做。In [9]: r'\n'
Out[9]: '\\n'
In [10]: r'abc\n'
Out[10]: 'abc\\n'
In [11]: r'abc\'
------------------------------------------------
File "", line 1
r'abc\'
^
SyntaxError: EOL while scanning string literal
In [12]: r'abc\\'
Out[12]: 'abc\\\\'
所以在右引号前加一个反斜杠是错误的,但是两个反斜杠会给你两个反斜杠!当然我不是唯一一个为此烦恼的人?
关于“raw”字符串为什么是“raw,除了反斜杠引号”?我是说,如果我想在其中嵌入一个单引号,我只需要在字符串周围使用双引号,反之亦然。如果我两个都想要,我就三倍报价。如果我真的想在一个原始字符串中连续引用三个引号,那么,我想我必须处理,但是这被认为是“正确的行为”吗?
这对于Windows中的文件夹名尤其有问题,其中反斜杠是路径delimeter。