如何将列中的每个值拆分为Python中的单独csv文件?

时间:2018-04-16 23:57:47

标签: python csv

我在csv文件中有这样的列:

-----
label
-----
0
1
0
2
1
4
3
0

现在我需要将每个值写为不同的CSV文件:

0.csv
1.csv
...
7.csv

我尝试过以下代码,可以在单个csv文件上写下每一行:

import re
test_f = open('test.csv')
result_f = open('result.csv', 'a')
for line in test_f:
    new_str = re.sub('[^a-zA-Z0-9\n\.]'," ", line)
    result_f.write(new_str)

# also, this too, please:
test_f.close()
result_f.close()

但我不知道如何在不同的文件中保存每一行。还有更好的消化吗?

1 个答案:

答案 0 :(得分:1)

这段代码怎么样?它已经使用上下文管理器(with)处理“关闭”方法,跳过标题并将内容拆分为文件,并分成具有单独关注点的函数! ;)

import re

def skip_header(source):
    for i in range(3):
        next(source)

def write_file(filename, content):
    print(f'Writting file "{filename}" with content "{content}"...')
    with open(filename, 'w') as destination:
        destination.write(content)

src_filename = './csv/main.csv'
with open(src_filename) as source:
    skip_header(source)
    for index, line in enumerate(source):
        dst_filename = f'./csv/file_{str(index)}.csv'
        content = re.sub('[^a-zA-Z0-9\.]', "", line)
        write_file(dst_filename, content)

这是简单项目的文件夹结构。文件 file_X.csv 由上面的代码生成(Python 3.6.4)。

project folder structure