2016-11-11 83 views
0

我想將excel文件的列連接到另一個excel文件的其他4列。在Python中加入一個數組中的兩個列表

下面的代碼:

Array1 = [] 
Arraytest1 = [] 
Arraytest2 = [] 
with open('file.txt', 'r') as f: 
    for line in f: 
    List1 = line.split('\t')[:4] 
    List2 = line.split('\t')[10] 
    Arraytest1.append(List1) 
    Arraytest2.append(List2) 
    Arraytest1.extend(Arraytest2) 
    print 'Array 1 :', Arraytest1 

我在輸出看到的是:

陣列1:[[ 'A', 'B', 'C', 'd'], ['E']]

數組1:[['A','B','C','D'],'E',['X1','X1','X1',' X1'],'E',Y1]

但是我是這樣的:

陣列1:[ 'A', 'B', 'C', 'd', 'E']

陣列1:[ 'X1', 'X1', 'X1', 'X1', 'Y1']

陣列1:[ 'X2', 'X2', 'X2', 'X2', 'Y2']

等.. 我將感謝您的幫助

回答

1
List1 = line.split('\t')[:4] 

使得List1已經有一個列表。

Arraytest1.append(List1) 

是把這個列表插入ArrayTest1,認爲ArrayTest1 = [[List1's contents]]

然後,當你正在擴展它,你一旦放平,但有一個嵌套列表,這就是爲什麼你看到的結果。

嘗試:

List1 = line.split('\t')[:4] 
List2 = line.split('\t')[10] 
Arraytest1.extend(List1) 
Arraytest2.extend(List2) 
Arraytest1.extend(Arraytest2) 
print 'Array 1 :', Arraytest1 

或者你可以將其替換爲:

Arraytest1 += List1 
Arraytest2 += List2 

我敢肯定,你知道,但append對象添加到列表中,extend增加了每個對象的迭代。

附加:

x = [1,2,3] 
x.append([4,5]) 
#x is now [1,2,3,[4,5]] 

擴展

x = [1,2,3] 
x.append([4,5]) 
#x is now [1,2,3,4,5] 
x.append(1) #throws error 

拆分返回一個列表...但有時,如果你只是想將一個字符串分解只投它。

x = "hello" 
x = x.split() 
#x is now ['hello'] 

x = "hello" 
x = list(x) 
#x is now ['h', 'e', 'l', 'l', 'o'] 

拆分句子是通常會分裂做,在Python中的字符串是iterables所以你可以扔在列表中它們分開到每一個字符。我認爲這是你想要的」

編輯:根據您的意見這是一個循環的問題:

要附加添加到列表中的for循環去,但似乎你想要一個新的列表,每次它循環。您不是用乾淨的替換列表,而是每次都添加到列表中。嘗試更換:

Arraytest1.extend(List1) 
Arraytest2.extend(List2) 

太:

Arraytest1 = List1[:] 
Arraytest2 = List2[:] 
+0

謝謝,但每當我在輸出而不是''替代 'E''用'' Test'' 'Test''我看到類似'' T'','E',''S'',''T'' – Braian

+0

正在編輯我的答案,包括遺憾忘記了xD看看 – MooingRawr

+0

A,B,C,D和E在我的真實代碼是名稱,我用分裂因爲我正在從txt文件中讀取它們。這個txt文件由不同的列組成,這些列由標籤分隔 – Braian

相關問題