你很混淆原始字符串文字與%r
(repr()
)字符串格式化程序。它們不是同一件事。
你定義一個字符串:
'This is a string with a newline\n'
這將產生一個字符串對象。然後,您將該字符串對象與%
運算符一起使用,該運算符可讓您用任何%
運算符的右側替換任何%
標記的佔位符。 %r
佔位符使用repr()
爲給定對象生成一個字符串並將該字符串插入到插槽中。
如果您預計\n
被解釋爲一個反斜槓和獨立n
字符,使用原始字符串字面,通過r
前綴:
r'This is a string with a literal backslash and letter n: \n'
如果您預計%r
產生逃脫(蟒蛇)語法,將換行符置於右側的值; repr()
串產生字符串文字語法:
'This will show the string in Python notation: %r' % ('String with \n newline',)
這需要的repr('String with \n newline')
輸出,並將其插入到字符串:
>>> 'String with \n newline'
'String with \n newline'
>>> repr('String with \n newline')
"'String with \\n newline'"
>>> print repr('String with \n newline')
'String with \n newline'
>>> 'This will show the string in Python notation: %r' % ('String with \n newline',)
"This will show the string in Python notation: 'String with \\n newline'"
>>> print 'This will show the string in Python notation: %r' % ('String with \n newline',)
This will show the string in Python notation: 'String with \n newline'
你想到了'\ N'不被解釋爲換行符?您正在將字符串語法本身插入的值混淆。 –