正确包装长python字符串以进行optparse

时间:2013-04-10 14:10:47

标签: python string optparse

如何自动换行长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
             '''))

是我找到的最佳选项,格式几乎并允许重新填充,但会在字符串的开头产生额外的空格。

3 个答案:

答案 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给出的链接实际上是关于它的部分。