将特定列从.csv文件复制到另一个.csv文件,并将其另存为新的.csv文件问题

时间:2016-03-10 03:39:55

标签: python csv

假设File1是我要从中复制列的文件,而File 2是我希望粘贴该列的文件,一旦粘贴,将此文件另存为扩展名为.csv的新文件。它看起来像一个简单的代码,但我的第一个代码尝试给了我这个错误“AttributeError:'file'对象没有属性'writerow' “。很明显,我似乎不知道我在这里做错了什么。所以我想知道你们是否可以帮助我。这是我到目前为止编写的代码:

import csv

File1 = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/dyn_0.csv'
File2 = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/HiSAM1_data_160215_164858.csv'


with open(File1, "r") as r, open(File2, "a") as w: 
     reader = csv.reader(r, lineterminator = "\n")
     writer = csv.writer(w, lineterminator = "\n")

     for row in reader:
         w.writerow(row[0]) 

如果问题需要格式化,请告诉我。此外,如果您认为代码不能满足我的需求,那么我可以从哪里开始提示肯定会有所帮助。请记住,我是一个慢学习者,所以如果你能告诉我如何让它一步一步地工作,这将是一个巨大的帮助!我只需要一些启动器,所以我可以继续并编写自己的启动器。谢谢:o)

1 个答案:

答案 0 :(得分:1)

您最直接的问题是w是文件对象...您想要writer。但是你还有其他一些问题。首先,您描述了3个文件,而不是两个。接下来,您需要实际插入列。最后,如果两个文件的长度不同,您必须决定该怎么做。在这个例子中,我假设您想从第一个csv文件中取出第一列,并将其作为合并结果中的第一列插入。我推文文件名(希望)让它更清晰。

以下代码有几种合并csvs的技术,如评论中所述。你需要根据自己的情况改变它们。

import os
import csv

File1 = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/dyn_0.csv'
File2 = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/HiSAM1_data_160215_164858.csv'

root, ext = os.path.splitext(File2)
output = root + '-new.csv'

with open(File1) as r1, open(File2) as r2, open(output, 'w') as w:
    writer = csv.writer(w)
    merge_from = csv.reader(r1)
    merge_to = csv.reader(r2)
    # skip 3 lines of headers
    for _ in range(3):
        next(merge_from)
    for merge_from_row, merge_to_row in zip(merge_from, merge_to):
        # insert from col 0 as to col 0
        merge_to_row.insert(0, merge_from_row[0])
        # replace from col 1 with to col 3
        merge_to_row[1] = merge_from_row[3]
        # delete merge_to rows 5,6,7 completely
        del merge_to_row[5:8]
        writer.writerow(merge_to_row)