4

如何自动包装长 python 字符串以便它们正确打印?

具体来说,我正在尝试使用我希望能够轻松修改的 optparse 添加帮助字符串。

我发现了几种处理长字符串的方法,这些方法都不允许我在使用 Emacs 或类似的 Mq 进行更改后重新填充:

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

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

4

3 回答 3

2

文档使用dedent所以它看起来很合理,特别是如果它有效。如果您想删除前导空格,您可以:

help = dedent('''
             this is my
             long help text
             ''')[1:]

虽然

dedent(…).lstrip() 

可能更明显。

于 2013-04-10T14:16:37.593 回答
1

我不是 100% 确定什么是重新填充,但这是我通常使用的:

p.add_option('-a', help = ("this is my "
                           "long help text"))

(注意额外的括号)。Emacs 将下一行与前面的左括号对齐。

于 2013-04-10T14:20:07.710 回答
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 给出的链接实际上是关于它的部分。

于 2013-04-10T21:57:30.333 回答