csv合并问题,python

时间:2017-08-16 21:11:07

标签: python csv merge dataset

使用以下代码合并CSV文件,有时会将数据放入错误的列中。它不是在列A-D中,而是将数据放在F-J列中。据我所知,这是新CSV的第一行被放入错误的列,但不是每个CSV文件。

import glob
import codecs
import csv 

my_files = glob.glob("*.csv") 

header_saved = False 
with codecs.open('Final-US-Allies-Expects.csv','w', "UTF-8", 'ignore') as file_out: #save data to
    for filename in my_files:
        with codecs.open(filename, 'r', 'UTF-8', 'ignore') as file_in: 
            header = next(file_in) 
            if not header_saved: 
                file_out.write(header) #write header
                header_saved = True
            for line in file_in:
                file_out.write(line) #write next line

Merging multiple CSV files without headers being repeated (using Python)提供的原始代码(声誉不足以添加原始问题)

Visual of issue

我附上了这个问题的视觉效果。我需要能够在要写入的列中写入每一行。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在将文字写入文件之前,您似乎没有检查线条是否以新行字符结尾。这可能会弄乱对齐。你能试试吗?

import glob
import codecs
import csv

my_files = glob.glob("*.csv")

header_saved = False
with codecs.open('output.csv','w', "UTF-8", 'ignore') as file_out:
    for filename in my_files:
        with codecs.open(filename, 'r', 'UTF-8', 'ignore') as file_in:
            header = next(file_in)
            if not header_saved:
                file_out.write(header if "\n" == header[-1] else header + "\n")
                header_saved = True
            for line in file_in:
                file_out.write(line if "\n" == line[-1] else line + "\n")