繁体   English   中英

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

[英]Copy specific Column from a .csv file to another .csv file and save it as a new .csv file issue

假设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)

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

如注释中所述,以下代码具有几种用于合并csv的技术。 您需要根据实际情况进行更改。

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM