88

作成したい引数を含む非常に長い文字列があるとします。複数行の文字列を作成できることは知っています

cmd = """line 1
      line 2
      line 3"""

しかし、ここで引数として 1、2、および 3 を渡したいとしましょう。

これは機能します

cmd = """line %d
      line %d
      line %d""" % (1, 2, 3)

しかし、30 以上の引数を持つ非常に長い文字列がある場合、それらの引数を複数行で渡すにはどうすればよいでしょうか? それらを 1 行で渡すと、複数行の文字列を作成しようとする目的さえ無効になります。

彼らの助けと洞察のために前もって誰にでも感謝します。

4

10 に答える 10

105

str.format()名前付き引数を許可する関数を使用できます。

'''line {0}
line {1}
line {2}'''.format(1,2,3)

もちろん、Python の構文を使用してこれを拡張し、 or*argsを渡せるようにすることもできます。tuplelist

args = (1,2,3)
'''line {0}
line {1}
line {2}'''.format(*args)

引数に賢く名前を付けることができる場合、最も堅牢な解決策は (最もタイプの多いものですが)、Python の**kwargs構文を使用して辞書を渡すことです。

args = {'arg1':1, 'arg2':2, 'arg3':3}
'''line {arg1}
line {arg2}
line {arg3}'''.format(**args)

str.format()ミニ言語の詳細については、こちらを参照してください。

于 2012-06-11T19:22:13.770 に答える
55

(括弧とカンマの行継続プロパティを悪用する可能性があります,

cmd = """line %d
      line %d
      line %d""" % (
      1,
      2,
      3)
于 2012-06-11T18:34:28.093 に答える
4

引数が挿入されるのと同じ行に引数を含めるには、次のようにします。

cmd = "line %d\n"%1 +\
      "line %d\n"%2 +\
      "line %d\n"%3

[編集:]最初のコメントに応えて、私はこれを思いついた:

cmd = "\n".join([
      "line %d"%1,
      "line %d"%2,
      "line %d"%3])
于 2012-06-11T18:38:39.247 に答える
2

これは私のために働く:

cmd = """line %d
      line %d
      line %d""" % (
          1,
          2,
          3
      )
于 2012-06-11T18:34:41.697 に答える