根据列值将大型csv拆分为较小的csv文件,最后在较小的文件中以空格结尾

时间:2019-08-26 19:00:39

标签: python

尝试将单个csv文件拆分为按列值分类的多个较小的csv文件。我通过乔恩·克莱门茨(Jon Clements)在这里得到了答案,但是生成的较小的csv文件每隔一行就有空白。为什么代码会以这种方式产生空白行?较大的csv文件中没有空白行。 (Splitting csv file based on a particular column using Python

我阅读了csv软件包上的文档,并尝试在每次迭代中打印出行值,但我看不到任何空白的行。

import csv
splitbycoln='STATE'
with open(file_path) as fin:    
    csvin = csv.DictReader(fin)
    # Category -> open file lookup
    outputs = {}
    for row in csvin:
        cat = row[splitbycoln]
        # Open a new file and write the header
        if cat not in outputs:
            fout = open('{}.csv'.format(cat), 'w')
            dw = csv.DictWriter(fout, fieldnames=csvin.fieldnames)
            dw.writeheader()
            outputs[cat] = fout, dw
        # Always write the row
        outputs[cat][1].writerow(row)
        # print(row)
    # Close all the files
    for fout, _ in outputs.values():
        fout.close()

我希望较小的csv文件没有空白行。


编辑:通过Erick Stone对重复问题的回复找到了解决方案。只需在fout = open命令中添加换行符=''即可。 [使用DictWriter时,您将在open函数中获得新行,并在writerow函数中获得新行。您可以在打开功能中使用newline =''来删除多余的换行符。]

0 个答案:

没有答案