使用以下代码合并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)提供的原始代码(声誉不足以添加原始问题)
我附上了这个问题的视觉效果。我需要能够在要写入的列中写入每一行。
提前感谢您的帮助。
答案 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")