2013-09-22 47 views
0

這裏是我的代碼,我想做一個條件連接,我的問題是在for循環的末尾我有所有以\n開頭的變量。要刪除它,我需要刪除每個變量。我認爲應該有一些連擊方式來解決這個問題。任何建議,將不勝感激。在一個循環中的字符串連接

foo = bar = remaining = '' 
for i in ['foo', 'foo', 'hello', 'foo', 'tr', 'foo', 'bar', 'foo', 'el']: 
    if 'foo' in i: 
     foo += '\n%s' % i 
    elif 'bar' in i: 
     bar += '\n%s' % i 
    else: 
     remaining += '\n%s' % i 
foo = foo.strip() 
bar = bar.strip() 
remaining = remaining.strip() 
+0

爲什麼你會很難去除'''\ n'''?你自己的代碼是把它放在輸出變量中的東西。有幾種方法可以整理字符串連接以跳過換行符。 –

+0

strip()僅僅是不夠的使用加入方法 – drabo2005

+0

@HathHunnicutt我想知道一些麪糊接近處理這個,我的代碼是完全有用的,但我認爲我已經做了一個額外的代碼來處理這個問題 –

回答

6

不是建立串,建立名單和'\n'.join然後當你完成:

foos = [] 
bars = [] 
remaining = [] 
for i in ['foo', 'foo', 'hello', 'foo', 'tr', 'foo', 'bar', 'foo', 'el']: 
    if 'foo' in i: 
     foos.append(i) 
    elif 'bar' in i: 
     bars.append(i) 
    else: 
     remaining.append(i) 

foo = '\n'.join(foos) 
bar = '\n'.join(bars) 
remaining = '\n'.join(remaining) 
+0

@HeathHunnicutt:我想你錯過了我的編輯 – Eric

+0

@HathHunnicutt:同時性是主觀的。但是,是的,我承認這是低掛的果實,我應該第一時間得到它 – Eric

+0

Hooray join();比連續級聯更有效得多 –

0
foo = '' 
bar = '' 
remaining = '' 

_list = ['foo', 'foo', 'hello', 'foo', 'tr', 'foo', 'bar', 'foo', 'el'] 

for outer in xrange(len(_list)): 
    for i, e in enumerate(_list): 

     foo += '\n%s' % _list.pop(i) if 'foo' in e else '' 
     bar += '\n%s' % _list.pop(i) if 'bar' in e else ''