Python 2.7 将列复制到另一个csv文件
我有一个csv表,我想将一些列复制到另一个csv表Python 2.7 将列复制到另一个csv文件,python-2.7,csv,Python 2.7,Csv,我有一个csv表,我想将一些列复制到另一个csv表 import csv path1='1.csv' path2='2.csv' outdata=[] with open(path1,'rb') as input ,open (path2,'wb') as output: reader=csv.reader(input) writer=csv.writer(output,delimiter=' ') for row in reader: outdata.a
import csv
path1='1.csv'
path2='2.csv'
outdata=[]
with open(path1,'rb') as input ,open (path2,'wb') as output:
reader=csv.reader(input)
writer=csv.writer(output,delimiter=' ')
for row in reader:
outdata.append(row[0])
outdata.append(row[1])
write.writerows(outdata)
这是我的原始表(某些单元格为空):
但新表仅在一列中:
a
1
5
b
e
我想要的是:
a b
1
e
5
你的情况有点复杂。在您的情况下,空格既是分隔符,又是列项!!哎呀,这肯定会把Python解释器弄糊涂。看看你能不能避免 我假设“”(即空格)不是列条目,而是“”(即空字符串)。然后,您的1.csv变为:
$> cat 1.csv
a b c d f
1 3 5
e t
5 4 6
如果这是您的场景,那么此代码将起作用:
import csv
path1='1.csv'
path2='2.csv'
outdata = []
input_file = open(path1,'rb')
output = open (path2,'wb')
reader=csv.reader(input_file, delimiter=' ')
writer=csv.writer(output,delimiter=' ')
for row in reader:
print("row: ", row)
outdata.append([row[0], row[1]])
print(outdata)
writer.writerows(outdata)
因此,您的脚本中有几处更改:
csv.writerows()
,因此输入是一个列表列表&每个列表都是一行。因此,准备一个列表&您将正确地看到这些值$> cat 2.csv
('row: ', ['a', 'b', 'c', 'd', 'f'])
('row: ', ['1', '', '3', '', '5'])
('row: ', ['', 'e', '', 't'])
('row: ', ['5', '', '4', '', '6'])
[['a', 'b'], ['1', ''], ['', 'e'], ['5', '']]
a b
1
e
5
我添加了大量打印,以便您更好地理解脚本。:) 它仍然是错误的,表示outdata.append([row[0],row[1]])。索引器:列表索引超出范围。我认为我们不能像[0]行和[1]行那样使用append@ZexiangFan:您的python版本是什么?我使用了python-2.6.5,上面的代码是我工作文件的复制粘贴。
$> cat 2.csv
('row: ', ['a', 'b', 'c', 'd', 'f'])
('row: ', ['1', '', '3', '', '5'])
('row: ', ['', 'e', '', 't'])
('row: ', ['5', '', '4', '', '6'])
[['a', 'b'], ['1', ''], ['', 'e'], ['5', '']]
a b
1
e
5