繁体   English   中英

Python:组合 2 个不同分隔的 csv 文件的有效方法

[英]Python: efficient way of combining 2 differently delimited csv files

我编写了以下代码,将制表符分隔的 csv 文件与另一个逗号分隔的 csv 文件(也有 header)结合起来。 最终的 output 是制表符分隔的 csv,没有 header。

    with open('train.csv',"r") as infile1, open("test.csv", "r") as infile2, open('final.csv',"a") as outfile:
        reader1 = csv.reader(infile1, delimiter='\t')
        reader2 = csv.reader(infile2)
        next(reader2, None)  # skip the headers
        
        writer = csv.writer(outfile, delimiter='\t')
        for row in reader1:
        writer.writerow(row)
        for row in reader2:
        writer.writerow(row)

下面分别是train.csvtest.csv的示例文件

main-captions   MSRvid  2012    0001    5.000   A plane.    is taking off.
main-captions   MSRvid  2012    0004    3.800   A man.  is playing a flute.

Domain,Task Name,Year,Index,Score,Sentence 1,Sentence 2
Exp,Exp,2020,1,5,product,damage
Exp,Exp,2020,2,5,product,broken

上面的代码工作正常。

但是有没有更短的方法来实现这一点? 比如说,这利用了csv模块中的任何新包或功能?

你的代码已经很高效了。 但可以使用writer.writerows进一步缩短它

    from itertools import chain
    writer.writerows(chain(reader1, reader2))

暂无
暂无

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

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