2017-08-21 1 views
1

私はPythonを学んでいます。私は、Pythonコードインデントを壊さずに表示するために複数のリテラル行を配置する方法がありますか?

私は、簡単なコードの読み取りと簡単な出力の読み取りのためのリテラルラインを配置したいと思います。 詳細については、次のコードを参照してください。行の先頭でないホワイトスペースなしで、つまり、出力を配置する

failed=True 
if failed: 
    print('\ 
Failed.\n\ 
reason:...\n\') 

出力

Failed. 
reason:... 

、Pythonコードでリテラル行が行の先頭に開始。しかし、それはPythonコードインデントを破ります。 Pythonコードインデントを破らずに複数のリテラル行を並べて表示する方法はありますか? ありがとうございます。

答えて

2

:ここ

は、それはかなりありませんが、あなたは、隣接する文字列リテラルを連結するために、コンパイラの自然を活用することができます例

failed=True 
if failed: 
    print('''\ 
Failed.\n\ 
reason:...\n\n''') 
0

yesがトリプル単一引用符を使用「」「テキスト」「」または二重引用符「」「いくつかのテキスト」「」。複数行の文字列にあなたを持っているのpythonで

print('foo\n' 
     'bar\n' 
     'baz quux') 
+3

これは、質問者が懸念しているインデント問題をどのように解決しますか? –

+0

コードを実行して@ IgnacioVazquez-Abramsをチェックしてください。 – Stack

+1

はい、コードは動作しますが、実際の問題は解決していません。 –

3

です

failed=True 
if failed: 
    print('''\ 
      Failed.\n\ 
      reason:...\n''') 

This will break output indentation: 

     Failed. 
     reason:... 

出力インデントとコードインデントを維持するには、次のように入力します。

failed=True 
if failed: 
    print("Failed.\nreason:...\n") 

か::

print("Failed.\n" + 
     "reason:...\n") 

か:テキスト行を追加しウルド

print("Failed.\n" 
     "reason:...\n") 

出力:

Failed. 
reason:... 
1

は別のオプションは、トリプル引用されたと一緒にtextwrap.dedentを使用しています文字列リテラル。

:なしインデントで、出力

import textwrap 
failed=True 
if failed: 
    print(textwrap.dedent("""\ 
     Failed. 
     reason:... 
     you 
     entered 
     an 
     invalid 
     number""")) 

:これは、あなたが自由にあなたが好きなインデントレベルであなたの文字列を入力しておくと、その後、ちょうど長いメッセージのために容易になることができ、最後にそれを閉じることができます

Failed. 
reason:... 
you 
entered 
an 
invalid 
number 

この構文はきれいで、文字列の両端にオーバーヘッドが残り、厳密なインデントを視覚的に維持することができます。

関連する問題