在尝试遵守python样式规则时,我将编辑器设置为最多79列。
在PEP中,它建议在括号,括号和括号内使用python隐含的延续。但是,当我达到col限制时处理字符串时,它会有点奇怪。
例如,尝试使用多行
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!"
你的字符串最终为:
"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!"
所以,我的问题是 - 关于如何做到这一点的一些人的建议是什么?在样式指南中是否有一些我没想到的东西,它显示了我应该如何做到这一点?
感谢。
答案 0 :(得分:210)
从adjacent string literals are automatically joint into a single string开始,您可以按照PEP 8的建议使用括号内的隐含线继续:
print("Why, hello there wonderful "
"stackoverflow people!")
答案 1 :(得分:37)
只是指出使用括号来调用自动连接。如果您碰巧已经在声明中使用它们,这很好。否则,我会使用' \'而不是插入括号(这是大多数IDE自动为您执行的操作)。缩进应该对齐字符串continuation,因此它符合PEP8。 E.g:
my_string = "The quick brown dog " \
"jumped over the lazy fox"
答案 2 :(得分:5)
另一种可能性是使用textwrap模块。这也避免了弦乐只是坐在不知名的地方的问题"正如问题所述。
import textwrap
mystr = """\
Why, hello there
wonderful stackoverfow people"""
print (textwrap.fill(textwrap.dedent(mystr)))
答案 3 :(得分:1)
我用
解决了这个问题mystr = ' '.join(
["Why, hello there",
"wonderful stackoverflow people!"])
过去。它并不完美,但它适用于非常长的字符串,它们不需要换行符。
答案 4 :(得分:0)
这是一种非常干净的方法:
myStr = ("firstPartOfMyString"+
"secondPartOfMyString"+
"thirdPartOfMyString")