長い文字列の定義を複数行に分割するにはどうすればいいですか? 質問する

長い文字列の定義を複数行に分割するにはどうすればいいですか? 質問する

非常に長いクエリがあります。Python でそれを数行に分割したいと思います。JavaScript でこれを行うには、複数の文を使用してそれらを演算子で結合します+(おそらく、これが最も効率的な方法ではないことはわかっていますが、この段階ではパフォーマンスについてはあまり気にしておらず、コードの読みやすさだけを気にしています)。例:

var long_string = 'some text not important. just garbage to' +
                      'illustrate my example';

Python でも同様のことを試してみましたが、うまくいかなかったので、\長い文字列を分割しました。ただし、これが唯一/最善/Python らしい方法かどうかはわかりません。見た目がぎこちないです。実際のコード:

query = 'SELECT action.descr as "action", '\
    'role.id as role_id,'\
    'role.descr as role'\
    'FROM '\
    'public.role_action_def,'\
    'public.role,'\
    'public.record_def, '\
    'public.action'\
    'WHERE role.id = role_action_def.role_id AND'\
    'record_def.id = role_action_def.def_id AND'\
    'action.id = role_action_def.action_id AND'\
    'role_action_def.account_id = ' + account_id + ' AND'\
    'record_def.account_id=' + account_id + ' AND'\
    'def_id=' + def_id

参照:Python で改行 (行継続) を行う (長いソース コードの行を分割する) にはどうすればよいですか?コード全体の行は長いが、長い文字列リテラルが含まれていない場合。

ベストアンサー1

複数行の文字列について話しているのですか? 簡単です。文字列の始めと終わりに三重引用符を使用します。

s = """ this is a very
        long string if I had the
        energy to type more and more ..."""

一重引用符も使用できます (もちろん、先頭と末尾に 3 つ)。結果の文字列はs他の文字列と同じように扱うことができます。

: 他の文字列と同様に、開始引用符と終了引用符の間にあるものはすべて文字列の一部となるため、この例では先頭に空白があります (@root45 が指摘したとおり)。この文字列には空白と改行の両方も含まれます。

つまり、

' this is a very\n        long string if I had the\n        energy to type more and more ...'

最後に、次のように Python で長い行を構築することもできます。

 s = ("this is a very"
      "long string too"
      "for sure ..."
     )

余分な空白や改行は含まれませ(これは、空白をスキップした場合の効果がどうなるかを示す意図的な例です)。

'this is a verylong string toofor sure ...'

カンマは必要ありません。結合する文字列を括弧内に配置するだけで、必要な空白と改行を必ず考慮してください。

おすすめ記事