5

タイプの非常に長い引数がstr関数に渡されるスクリプトがあります。

parser = argparse.ArgumentParser(description='Auto-segments a text based on the TANGO algorithm (Rie Kubota Ando and Lillian Lee, "Mostly-Unsupervised Statistical Segmentation of Japanese Kanji Sequences" (Natural Language Engineering, 9(2):127-149, 2003)).')

このスクリプトの行の長さを79文字に制限したいのですが、これは問題の文字列の途中で改行することを意味します。79で​​ラップするだけで、次のようなものになります。これは構文的に形式が正しくありません。

parser = argparse.ArgumentParser(description="Auto-segments a text based on 
    the TANGO algorithm (Rie Kubota Ando and Lillian Lee, 'Mostly-Unsupervis
    ed Statistical Segmentation of Japanese Kanji Sequences' (Natural Langua
    ge Engineering, 9(2):127-149, 2003)).")

PEP 8には、引数文字列の内部以外のさまざまな場所で行を分割するためのガイドラインがありますが、引数文字列の途中で行を分割する方法はありますか?

(関連するがそれほど重要ではない質問:( Python)スクリプト内の単語の途中で自然言語テキストを分割するための賢明で従来の方法は何ですか?)

4

3 に答える 3

5

リテラル文字列は隣り合って表示され、単一の文字列にコンパイルされます。したがって:

parser = argparse.ArgumentParser(description="Auto-segments a text based on "
    "the TANGO algorithm (Rie Kubota Ando and Lillian Lee, 'Mostly-Unsupervised "
    "Statistical Segmentation of Japanese Kanji Sequences' (Natural Language "
    "Engineering, 9(2):127-149, 2003)).")

必要に応じて 80 に収まるように調整します。

于 2013-02-27T02:22:00.087 に答える
1
>>>longarg = "ABCDEF\
GHIJKLMNOPQRSTUVW\
XYZ"

>>>print longarg
ABCDEFGHIJKLMNOPQRSTUVWXYZ
于 2013-02-27T02:21:22.160 に答える
0

argparseとにかく説明文字列を再フォーマットするので、余分なスペースを含む複数行の文字列を使用しても結果は変わりません:

import argparse

parser = argparse.ArgumentParser(description='''Auto-segments a text based on the
    TANGO algorithm (Rie Kubota Ando and Lillian Lee, "Mostly-Unsupervised
    Statistical Segmentation of Japanese Kanji Sequences" (Natural Language
    Engineering, 9(2):127-149, 2003)).''')

args = parser.parse_args()

% test.py -h

usage: test.py [-h]

Auto-segments a text based on the TANGO algorithm (Rie Kubota Ando and Lillian Lee,
"Mostly-Unsupervised Statistical Segmentation of Japanese Kanji Sequences" (Natural
Language Engineering, 9(2):127-149, 2003)).

optional arguments:
  -h, --help  show this help message and exit
于 2013-02-27T02:35:04.823 に答える