如何自动换行长python字符串以便正确打印?
具体来说,我正在尝试使用optparse添加帮助字符串,我希望能够轻松修改。
我找到了几种处理长字符串的方法,在emacs或类似代码中使用M-q进行更改后,没有一种方法允许我重新填充:
p.add_option('-a', help = "this is my\
long help text")
强制结果中的换行符,并且不允许重新填充
p.add_option('-a', help = "this is my "
"long help text")
格式正确,但不允许重新填充
p.add_option('-a', help = '''
this is my
long help text
''')
格式不正确但允许重新填充
p.add_option('-a', help = dedent('''
this is my
long help text
'''))
是我找到的最佳选项,格式几乎并允许重新填充,但会在字符串的开头产生额外的空格。
答案 0 :(得分:2)
docs use dedent因此看起来很合理,特别是如果有效的话。如果你想放弃领先的空间,你可以:
help = dedent('''
this is my
long help text
''')[1:]
虽然
dedent(…).lstrip()
可能更明显。
答案 1 :(得分:1)
我不是百分之百确定补充是什么,但这是我通常使用的:
p.add_option('-a', help = ("this is my "
"long help text"))
(注意附加括号)。 Emacs为我提供了前一个左括号的下一行。
答案 2 :(得分:1)
如果您使用的是Python> = 2.7,请使用argparse代替optparse。它为您dedent
。你可以这样做:
parser.add_argument('--argument', '-a', help='''
this is my
long help text
''')
即使您使用的是Python< 2.7,你可以从pypi安装argparse。
请注意,有一种方法可以抑制此自动行为。 @msw给出的链接实际上是关于它的部分。