![](/img/trans.png)
[英]Python3: What is the most efficient way to handle bar delimited files?
[英]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.csv
和test.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.