2015-12-15 122 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中,不需要getter和setters。我建議看一下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 ...刪除領先的空格是在第1列的每一行開始 –