仅当出于某种原因我正在执行打印语句时,它才有效。例如,我有
warnings.warn('blabla\
continuing writing')
在IDE中的下一行继续。它给了我一个错误,但它与往常一样是同一行继续。为什么会这样呢?
答案 0 :(得分:1)
至少在此处发布,反斜杠后有一个空格。
反斜杠继续是反斜杠,后跟换行符。反斜杠后跟一个空格,后跟一个换行符,只是一个反斜杠转义的空格和一个未转义的换行符。
当然,这在大多数文本编辑器中以及在Stack Overflow之类的网站上都很难看到(我必须在您的问题上单击“编辑”并在光标周围滚动以进行检查),这是许多原因之一人们尽可能避免使用反斜杠。
在字符串中使用它们尤其是一个问题,因为反斜杠转义的空格放在字符串中是完全合法的事情,因此编译器不会给您错误,甚至大多数linter都不会警告它。
如果您可以将编辑器配置为识别反斜杠空格并以某种方式显示它,或者只是用一些细微的标记向您显示所有换行符,则可能会有所帮助。
一个更好的解决方案-假设您实际上在那里需要换行符-使用三引号:
warnings.warn('''blabla
continuing writing''')
…可能与textwrap.dedent
一起使用,因此您可以很好地将内容排成一行: 1
from textwrap import dedent as D
warnings.warn(D(
'''blabla
continuing writing'''))
…或使用显式的\n
:
warnings.warn('blabla\ncontinuing writing')
…可能连同字符串串联:
warnings.warn('blabla\n'
'continuing writing')
(取决于此输出的目的,也许值得考虑的是,不必担心换行符的确切位置,而让textwrap.fill
使其适合输出。)
1。但是,值得注意的是,textwrap
文档中的示例实际上使用反斜杠换行符来馈送至dedent
,从而使您可以将三引号放在一行上,并将文本开头放在下一个...