pythoncsv按内容切分_CSV文件分割与列异常处理的python脚本

1 #!/usr/bin/env python3

2 #coding=utf-8

3

4 importos, csv, sys, locale, codecs, chardet, time5 from argparse importArgumentParser, RawTextHelpFormatter6

7 #操作系统中默认的文件编码(当文件编码为中文扩展字符集时,统一使用gb18030编码--比gb2312和gbk支持的汉字多,同时兼容gb2312和gbk)

8 #中文扩展字符集编码列表

9 chinese_charsetstr='|gbk|gb2312|gb18030|cp936|'

10 default_chinese_charset='gb18030'

11 #使用gb18030解决了类似下面的错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xf8 in position 5902: illegal multibyte sequence

12 defaultencoding = default_chinese_charset if chinese_charsetstr.find(locale.getpreferredencoding().lower())>0 elselocale.getpreferredencoding().lower()13

14 def detectfileencoding(filename, filerowcount=None, info_fileobj=None):15 #获取文件编码(为空则设置为操作系统默认文件编码,其中中文扩展字符集统一设置为'gb18030'大字符集)

16 time_start=time.time()17 #编码检测结果

18 detectresult=''

19 with codecs.open(filename, 'rb') as fobj:20 if filerowcount==None:21 fcontent =fobj.read()22 detectresult =chardet.detect(fcontent)23 else:24 linenum =025 maxdetectrownum = 100 if filerowcount > 100 elsefilerowcount26 #初始化要检测编码的内容

27 fcontent =bytes()28 for line infobj.readlines():29 linenum += 1

30 if linenum

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值