Python 2.7 将列复制到另一个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

我有一个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.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()
    ,因此输入是一个列表列表&每个列表都是一行。因此,准备一个列表&您将正确地看到这些值
  • 最后,上述python脚本的输出完全符合您的要求:

    $> 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