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

Python >= 2.7 を使用している場合は、optparse の代わりにargparseを使用してください。それは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 に答える