【发布时间】:2018-01-25 03:47:09
【问题描述】:
使用以下代码合并 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) 获得(声誉不够高,无法添加到原始问题中)
我附上了这个问题的图片。我需要能够将每一行写入要写入的列中。
提前感谢您的帮助。
【问题讨论】:
-
您能否重新格式化您的代码以使缩进清晰?您可以选择在编辑器中将其格式化为代码。
-
我已经按照你的要求做了。谢谢,对不起。
-
没问题。你有输入的csv吗?我无法重现该缺陷。
-
我愿意,但我不能分享数据,因为我个人并不拥有这些数据。我怀疑这是数据框本身的问题,并且由于您无法重现该问题,因此我的怀疑可能是正确的。
-
您是否在将行添加到文件之前检查行是否以换行符 (\n) 结尾。这可能是个问题。在文件的末尾,该行可能不包含 \n。