首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >csv合并问题,python

csv合并问题,python
EN

Stack Overflow用户
提问于 2017-08-16 21:11:07
回答 1查看 206关注 0票数 1

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

代码语言:javascript
运行
复制
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

原始代码可在 合并多个CSV文件而不重复头(使用Python) (声誉不足以添加原始问题)

问题视觉

我附上了这件事的图片。我需要能够把每一行都写进专栏中,这是要写进的。

谢谢你提前帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-16 21:44:03

看起来,在将行写入文件之前,您不检查这些行是否以新行字符结尾。这可能会弄糟路线。你能试试这个吗?

代码语言:javascript
运行
复制
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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45723063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档