Python风格 – 续行string?

在试图服从python样式规则时,我将编辑器设置为最多79列。

在PEP中,它build议在括号,括号和大括号中使用python隐含的继续。 但是,当我碰到string限制时处理string,会变得有点奇怪。

例如,试图使用多行

mystr = """Why, hello there wonderful stackoverflow people!""" 

将返回

 "Why, hello there\nwonderful stackoverflow people!" 

这工作:

 mystr = "Why, hello there \ wonderful stackoverflow people!" 

既然它返回这个:

 "Why, hello there wonderful stackoverflow people!" 

但是,当语句缩进几个块时,这看起来很奇怪:

 do stuff: and more stuff: and even some more stuff: mystr = "Why, hello there \ wonderful stackoverflow people!" 

如果您尝试缩进第二行:

 do stuff: and more stuff: and even some more stuff: mystr = "Why, hello there \ wonderful stackoverflow people!" 

您的string结束为:

 "Why, hello there wonderful stackoverflow people!" 

我发现解决这个问题的唯一方法是:

 do stuff: and more stuff: and even some more stuff: mystr = "Why, hello there" \ "wonderful stackoverflow people!" 

我喜欢的更好,但眼睛也有点不安,因为看起来像是坐在无处不在的中间。 这将产生适当的:

 "Why, hello there wonderful stackoverflow people!" 

所以,我的问题是 – 什么是一些人的build议,如何做到这一点,有什么我失踪的风格指南,确实显示我应该这样做?

谢谢。

由于相邻的string文字会自动合并为单个string ,因此您可以像PEP 8所build议的那样,使用括号内的隐含行连续:

 print("Why, hello there wonderful " "stackoverflow people!") 

只要指出这是使用括号来调用自动连接。 这很好,如果你碰巧已经在声明中使用它们。 否则,我只会使用'\'而不是插入圆括号(这是大多数IDE自动为您做的)。 缩进应该alignmentstring的延续,以便符合PEP8。 例如:

 my_string = "The quick brown dog " \ "jumped over the lazy fox" 

我已经解决了这个问题

 mystr = ' '.join( ["Why, hello there", "wonderful stackoverflow people!"]) 

以往。 这并不完美,但对于需要在其中没有换行符的非常长的string,它可以很好地工作。

另一种可能性是使用textwrap模块。 这也避免了问题中所提到的“串不落”的问题。

 import textwrap mystr = """\ Why, hello there wonderful stackoverfow people""" print (textwrap.fill(textwrap.dedent(mystr)))