我想将excel文件的列加入另一个excel文件的其他4列。
以下是代码:
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']
等等.. 我将非常感谢您的帮助
答案 0 :(得分: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
在iterable中添加了每个对象。
附加:
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
Split会返回一个列表...但有时候如果你只是想拆分一个字符串而只是强制转换它。
x = "hello"
x = x.split()
#x is now ['hello']
x = "hello"
x = list(x)
#x is now ['h', 'e', 'l', 'l', 'o']
分裂句子通常是分裂,Python中的字符串是可迭代的,因此您可以将它们转换为列表以将它们分成每个字符。我认为这就是你想要的'
编辑:根据您的评论,这是一个for循环问题:
您正在追加添加到列表中的for循环,但似乎每次循环时都需要一个新列表。您没有用干净的列表替换列表,而只是每次都附加到列表中。尝试更换:
Arraytest1.extend(List1)
Arraytest2.extend(List2)
太:
Arraytest1 = List1[:]
Arraytest2 = List2[:]