2015-11-01 65 views
-2
new_list =[] 
fieldscopy = ['donkey donkey2 donkey3'] 
print(fieldscopy) 
for i in fieldscopy: 
    new_list.append(i.rsplit( )[0]) 
print(new_list) 

它輸出這爲什麼分裂這兩個元素?

['donkey'] 

,而不是

['donkey', 'donkey2', 'donkey3] 

任何想法,簡單的方法,我讓後者的結果,而不是僅僅有第一個元素在裏面。假設在空間分割(/ t),但不是由於某種原因。

+0

你能告訴在'fieldscopy'不止一個值的例子嗎?輸出結果應該是什麼,單個列表或列表的列表? – Blckknght

回答

2

通過使用[0],您只選擇拆分的第一個元素。如果你想要所有的元素,只需要得到split本身的結果。這裏有一種方法:

new_list = [] 
fieldscopy = ['donkey donkey2 donkey3'] 
print(fieldscopy) 
for i in fieldscopy: 
    new_list.extend(i.rsplit()) 
print(new_list) 

你的代碼有很多其他可疑的特性。爲什麼迭代fieldscopy如果它只有一個元素?你是否在rsplit( )的括號中放置了多個空格,以爲它會在多個空格中分割? (不會)。爲什麼你用rsplit而不是split呢?我建議您閱讀Python tutorial以及您所調用功能的文檔。

+0

它是一個更大的事物的一部分。我只是這樣做,所以我可以得到這個具體的答案。 –

+0

至於rsplit vs分裂,真的沒有意識到差異。另外,我認爲你放入rsplit(「」)的參數或事物意味着它將在那裏分裂。 –

+2

@SS':這就是爲什麼你需要閱讀文檔。 – BrenBarn

0

你的邏輯錯誤。你正在遍歷fieldscopy中的所有元素(這正好是1個字符串)。然後,你的第一個單詞添加到新的列表,這會導致「驢」

正確的是:

for i in fieldscopy.split(" "): 
    newlist.append(i) 

然而,這是不必要的。你可以這樣做:

newlist = fieldscopy.split(" ") 
+0

循環,因爲這是一個更大的事情的一小部分,實際上有多個字段複製。只是爲了舉例而放在這裏。 –

+0

@SS'然後在這之前再做一次拆分以獲得行列表 – xXliolauXx

1
import re 
new_list =[] 
fieldscopy = ['donkey donkey2 donkey3'] 
new_list = re.findall(r'(\w+)',fieldscopy[0]) 
print(new_list) 
['donkey', 'donkey2', 'donkey3']