转义原始Python字符串中的字符

时间:2013-08-01 22:24:37

标签: python string syntax

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

2 个答案:

答案 0 :(得分:4)

引用the documentation

  

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

强调我的。

因此,原始字符串会将某些意义附加到反斜杠,但仅限于引号。

答案 1 :(得分:1)

来自Python文档:

  

如果我们将字符串文字设为“原始”字符串,\ n序列不会转换为换行符,但行末尾的反斜杠和源代码中的换行符都作为数据包含在字符串中

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