2014-11-13 33 views
1

我很難找出解決方案。我需要使用由動態數組構建的換行符構造單個字符串。例如用動態數組中的新行構造字符串

mylist = ['first line', 'second line', 'third line', 'fourth line'] 

單個文本字符串將需要最終是這樣的:

preamble = 'My preamble' 
postamble = 'My postable' 

TEXT = preamble+'\n'+mylist[0]+'\n'+mylist[1]+'\n'+mylist[2]+'\n'+mylist[3]+'\n'+postamble 

這裏是捕獲,MYLIST的長度是動態的,所以文本必須自動地調節。所以,如果MYLIST是這樣的:

mylist = ['first line', 'second line', 'third line'] 

然後我的文字會自動是這樣的:

TEXT = preamble+'\n'+mylist[0]+'\n'+mylist[1]+'\n'+mylist[2]+'\n'+postamble 

感謝所有幫助

+0

我會看看使用for語句與mylist中的變量。請記住,您可能需要從文本字符串中刪除最後一個\ n。 – midfield99

回答

1
mylist = ['first line', 'second line', 'third line', 'fourth line'] 
preamble = 'My preamble' 
postamble = 'My postable' 

text = preamble + '\n' + ('\n'.join(mylist)) + '\n' + postamble 

print text 

print text然後生成字符串中的格式如下:

My preamble 
first line 
second line 
third line 
fourth line 
My postable 
2

使用join

TEXT = preamble + '\n' + '\n'.join(mylist) + '\n' + postamble 

TEXT 
'My preamble\nfirst line\nsecond line\nthird line\nfourth line\nMy postable' 

print TEXT 

My preamble 
first line 
second line 
third line 
fourth line 
My postable 

要使它更具活力,你可以做一個函數,並調用它,只要你的名單變化:

def get_TEXT(): 
    return preamble + '\n' + '\n'.join(mylist) + '\n' + postamble 

mylist.append('fifth line') 

get_TEXT() 
'My preamble\nfirst line\nsecond line\nthird line\nfourth line\nfifth line\nMy postable' 

print get_TEXT() 

My preamble 
first line 
second line 
third line 
fourth line 
fifth line 
My postable 
+0

謝謝,加入工作 –

+0

@ChrisHall,不是一個問題,不是卑鄙的或任何東西,你能解釋你爲什麼喜歡另一個答案,而我的答案是第一?這與風格有關嗎? – Anzel

0
"\n".join([preamble] + mylist + [postamble]) 
+0

這是不正確的,考慮如果'mylist'是**空**,與OP的 – Anzel

+0

相比,您的結果將會丟失1'\ n',這是使用'join'的更優雅的方式:) – Anzel

0

以防萬一您的列表包含除字符串以外的其他類型:

a=[10,11,12] 
preamb='My Pre\n' 
postam='My Pos' 

Text=preamb 
for i in a: 
    Text += str(i)+'\n' 
Text+=postam 
print Text 

結果:

My Pre 
10 
11 
12 
My Pos