我的印象是,在 Python 中,一个原始字符串r'this is a raw string'
会省略任何转义字符,并准确打印引号之间的内容。我的问题是,当我尝试时,print r'\'
我得到了SyntaxError: EOL while scanning string literal
. print r'\n'
但是,正确打印\n
。
问问题
5391 次
2 回答
4
引用文档:
当存在
'r'
or'R'
前缀时,反斜杠后面的字符将不加更改地包含在字符串中,并且所有反斜杠都保留在字符串中。例如,字符串文字r"\n"
由两个字符组成:反斜杠和小写字母'n'
。字符串引号可以用反斜杠转义,但反斜杠保留在字符串中;例如,r"\""
是由两个字符组成的有效字符串文字:反斜杠和双引号;r"\"
不是有效的字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义后面的引号字符)。
增加了我的重点。
因此,原始字符串确实为反斜杠附加了一些含义,但仅在涉及引号的地方。
于 2013-08-01T22:26:17.367 回答
1
来自 Python 文档:
如果我们将字符串文字设为“原始”字符串,则 \n 序列不会转换为换行符,但行尾的反斜杠和源中的换行符都作为数据包含在字符串中。
您对原始字符串有错误的想法。
于 2013-08-01T22:26:34.920 回答