【问题标题】:python joining two csv filespython加入两个csv文件
【发布时间】:2012-07-31 22:24:47
【问题描述】:

我有两个 .csv 文件,headers.csvcorrected.csvheaders.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所以最终结果和我上面的例子一模一样。提前致谢!

【问题讨论】:

  • 你能不只是连接文件吗?
  • stackoverflow.com/questions/1001538/…。这篇 SO 帖子可能会回答您的问题。
  • 使用 python 连接文件似乎有点矫枉过正 - cat headers.csv corrected.csv > merged.csv
  • 哇,这绝对容易多了。谢谢!

标签: python csv


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用 python 连接文件似乎有点矫枉过正 -

    cat headers.csv corrected.csv > merged.csv
    

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

    【讨论】:

      【解决方案3】:

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

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

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

      应该只返回第一行。

      【讨论】:

      • 尝试运行这个...(记住csv.reader 是一个生成器)
      【解决方案4】:

      我只是隐藏了您在 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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-19
        • 1970-01-01
        • 2017-07-09
        • 2017-09-18
        • 2018-03-31
        • 2017-10-12
        • 1970-01-01
        相关资源
        最近更新 更多