2015-12-15 12 views
11

連結する文字列がいくつかあり、結果の文字列はかなり長くなります。連結する変数もあります。Pythonで複数行の文字列を連結する

文字列と変数の両方を組み合わせて、結果が複数行の文字列になるようにするにはどうすればよいですか?

次のコードはエラーをスローします。

str = "This is a line" + 
     str1 + 
     "This is line 2" + 
     str2 + 
     "This is line 3" ; 

私はこれを行う方法を提案してください。このあまりに

str = "This is a line" \ 
     str1 \ 
     "This is line 2" \ 
     str2 \ 
     "This is line 3" ; 

を試してみました。

+1

なぜあなたはあなたの目の前に '$'文字を持っています文字列...これらは有効なPython変数名ではありません。 –

+0

2.xや3を使っているPythonはどれですか? – ipinak

+0

@ipinak python 2.7.6 – user3290349

答えて

17

いくつかの方法があります。簡単な解決策は、括弧を追加することです:

strz = ("This is a line" + 
     str1 + 
     "This is line 2" + 
     str2 + 
     "This is line 3") 

あなたが別の行の各「行」をしたい場合は、改行文字を追加することができます。

strz = ("This is a line\n" + 
     str1 + "\n" + 
     "This is line 2\n" + 
     str2 + "\n" + 
     "This is line 3\n") 
1

リストに連結して改行する必要があるすべてを追加します。

my_str = '\n'.join(['string1', variable1, 'string2', variable2]) 
+1

これは私の目的を解決しません。スクリプトは変数名をとり、そのためのgetterとsetterメソッドを生成します。私はsae形式で書きたいと思います。 – user3290349

+1

@ user3290349これはあなたが尋ねた質問を解決し、拡大の余地があります。別の目的を解決したい場合は、その目的があなたの質問に記載されていることを確認してください。 –

+0

@ user3290349 Pythonではgettersとsetterは必要ありません。私はPythonの '@ property'デコレータを見てみることをお勧めします。 https://docs.python.org/2/library/functions.html#property –

5

PythonはPHPではないですし、変数名の前に$を置く必要がありません。

a_str = """This is a line 
     {str1} 
     This is line 2 
     {str2} 
     This is line 3""".format(str1="blabla", str2="blablabla2") 
+0

これには、各行の先頭の空白が含まれます。これは、現在のコードとは異なります。 –

+0

提供された初期コードが機能しなかったので、私はそれを考慮しませんでした。 –

+0

Btw ...先頭の空白を削除することは、col 1 –

関連する問題