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)))