尝试将单个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 =''来删除多余的换行符。]