2013-08-01 53 views
2

我的印象是,在Python中原始字符串,写为r'this is a raw string'将省略任何转义字符,并且正确地打印引号之间的内容。我的问题是,当我尝试print r'\'我得到SyntaxError: EOL while scanning string literal。但是,print r'\n'正确打印\n在原始Python字符串中转义字符

+0

啊,是的,这是...... –

回答

4

引用the documentation

'r''R'前缀存在时,以下反斜杠一个字符包含不变化的串中,且所有反斜杠留在的字符串中。例如,字符串文字r"\n"由两个字符组成:反斜杠和小写'n'字符串引号可以使用反斜杠进行转义,但反斜杠保留在字符串;例如,r"\""是由两个字符组成的有效字符串文字:反斜杠和双引号; r"\"不是有效的字符串字面值(即使原始字符串不能以奇数个反斜杠结尾)。具体而言,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义下面的引号字符)。

增加了我的重点。

因此,原始字符串会将的某些的含义附加到反斜杠,但仅限于涉及引号的位置。

1

从Python文档:

如果我们使字符串文字“原始”的字符串,\ n链段不被转换为换行,但反斜杠在该行的末尾,和换行字符在源中,都作为数据包含在字符串中。

你对原始字符串有错误的想法。