python拆分CSV文件

   问题提出:有一个文件,包括单位多个部门的数据,需要将起分为各部门的数据文件。其中区分的依据为第一列的前三个字符为部门编码,编码格式为UTF-8。
   文件内容如下:(csvall.csv)

D01010,张三1
D01020,张三2
D01030,张三3
D01040,张三4
D01050,张三5
D02010,张三6
D02020,张三7
D02030,张三8
D02040,张三9
D02050,张三10
D02060,张三11
D03010,张三12
D03020,张三13
D03030,张三14
D03040,张三15
D04010,张三16
D04020,张三17
D04030,张三18
D04040,张三19
D04050,张三20
D04060,张三21
D05010,张三22
D05020,张三23
D05030,张三24
D05040,张三25
D05050,张三26
D06010,张三27
D06020,张三28
D06030,张三29

'''
CSV分离软件:根据第一列前三字符(部门编号)拆分CSV文件
从第一列的前三个字符(部门编码)分别区分,存储为不同的文件。
运行前先删除生成的文件,避免追加
文件采用UTF-8编码,源文件第一行多一个字符(ASCII-65279)
故:读取源文件时,第一行编码为第2-4个字符[1:4],其他行为1-3[0-3]
     生成的文件第一个字符需添加该字符,否则Excel打开中文会出现乱字符
    用写字板可以正常打开,但若另存后,会自动添加该字符。
提示:用with可以自动管理文件的打开和关闭。
'''

with open('csvall.csv', 'r', encoding='UTF-8') as f:
    # 文件第一行第一个字符为文件的开始符,故要特殊处理
    # 目的是在Excel正常打开,在写字板下不受影响
    for line in f.readlines(1):  # 读第一行
        # 文件第一行多一个开始字符,所以要多读一个字符
        startchr = line[0]  # 读取文件的开始符(65279)
        # 读第一列部门编号(需3个字符),因带文件开始付,故多读一个
        dep = line[1:4]
        with open(dep + '.csv', 'a', encoding='UTF-8') as wf:
            wf.write(line)
        depold = dep
        # (第一行) 部门编号保存到变量,方便后面对照是否文件已建立(对照单位编号)
        #  若已建立,就不需要保存首字符(65278)

    for line in f.readlines():  # 后面行无开始字符
        dep = line[0:3]  # 取得部门编号
        with open(dep + '.csv', 'a', encoding='UTF-8') as wf:
        # 若不是新的部门,不添加开始符,即部门名称与上一行一样
            if dep == depold:
                wf.write(line)
            else:
                # 新部门,文件第一行添加开始符
                wf.write(startchr + line)
        depold = dep  # 保存原部门名,判断是否第一行
f.close()  # 关闭文件
在这里插入代码片
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值