1

我有两个 .csv 文件,headers.csvcorrected.csv. headers.csv具有所有标题,而只是corrected.csv一堆有组织的数据。

headers.csv:           
displacement, load, cputime, ...

corrected.csv:            
-990.478170,-0.000026,15:08:06, ...              
-990.038170,-0.000026,15:08:06, ...

The end goal is to be like this example:      
displacement,load,cputime, ...          
-990.478170,-0.000026,15:08:06, ...              
-990.038170,-0.000026,15:08:06, ...

是)我有的:

headers = [x for x in csv.reader(open('headers.csv', 'rb'))]
writer = csv.writer(open('merged.csv', 'wb'))
writer.writerow(headers)
for row in csv.reader(open('corrected.csv', 'rb')):
    writer.writerow(row)

但是,结果"['displacement', 'load', 'cputime', ...]"是全部写入 A 列,而我想要 A 列中的位移,B 列中的加载,C 列中的 cputime 等。我也想摆脱,', ", [], and whitespace所以最终结果与我的示例完全相同多于。提前致谢!

4

4 回答 4

2

假设您有一行以逗号分隔的列名,请尝试:headers = next(csv.reader(open('headers.csv')))

于 2012-08-02T21:35:27.557 回答
2

使用 python 连接文件似乎有点过头了——

cat headers.csv corrected.csv > merged.csv

如果您必须/出于某种原因想要使用 Python,Jon Clements 的想法是正确的。

于 2012-08-02T21:37:57.337 回答
1

在第一行中,您正在创建一个包含 headers.csv 中所有行的列表(理解列表),这就是您拥有 [] 等的原因。

试试这个(从我的脑海中):

headers = csv.reader(open('headers.csv', 'rb'))[0]

哪个应该只返回第一行。

于 2012-08-02T21:38:19.240 回答
1

我只是隐藏你有来自 csv 模块的多个文件的事实:

import csv

def cat(*files):
    for f in files:
        with open(f) as fobj:
            for line in fobj:
                yield line

writer = csv.writer(open('merged.csv', 'wb'))
for row in csv.reader(cat('headers.csv', 'corrected.csv')):
    writer.writerow(row)
于 2012-08-03T08:57:37.790 回答