例如:
a = (r'''\n1''')
b = (r'''
2''')
print(a)
print(b)
此示例的输出为:
\n1
2
这意味着即使b
应该是一个原始字符串,它似乎不像一个工作,为什么会这样?
我还检查过:
if '\n' in b:
print('yes')
这个输出是yes
,这意味着b是一个字符串,其内部确实有\n
个字符串。
答案 0 :(得分:1)
在原始字符串语法中,转义序列没有特殊含义(除了引号前的反斜杠)。字符\
加n
在原始字符串文字中形成两个字符,与常规字符串文字不同,其中这两个字符由换行符替换。
另一方面,实际的换行符是不是转义序列。它只是一个换行符,并且包含在字符串中。
将此与使用1
与\x31
进行比较;后者是数字1
的ASCII码点的转义序列。在常规字符串文字中,两者都会为您提供字符1
,在原始字符串文字中,不会解释转义序列:
>>> print('1\x31')
11
>>> print(r'1\x31')
1\x31
所有这些与括号无关。括号不会改变r'''...'''
原始字符串的行为。删除括号时会发生完全相同的事情:
>>> a = r'''\n1'''
>>> a
'\\n1'
>>> print(a)
\n1
>>> b = r'''
... 2'''
>>> b
'\n2'
>>> print(b)
2