python处理csv文件列错位_CSV文件分割与列异常处理的python脚本

#coding=utf-8

‘‘‘脚本说明

用来解决csv文件的列异常问题(以逗号分隔符为例):

csv文件有些列含有换行符、逗号等特殊符号,这就导致csv文件出现列异常的情况。

此脚本将csv文件输出成如下文件:源文件名-正确列-文件序号.csv 源文件名-错误列.csv 源文件名-info.txt

常用文本编码: gbk,gb2312,utf-8,utf-8_sig

★:因为没有实现文本编码转换,所以“输入文件编码”和“输出文件编码”要写成一致才行,其中输入文件编码必须正确

不知道为什么有些gbk输入文件会报错:

for count,line in enumerate(open(fileName+fileExt,‘rU‘,encoding=inFileEncoding)):

UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xf8 in position 5902: illegal multibyte sequence

解决办法:

使用powershell转换格式成utf-8,然后在使用本脚本来处理。其中powershell转换格式的代码如下:

Get-Content -path .\2014.csv|Out-File .\2014-1.csv -Encoding "utf-8"‘‘‘

#单行注释

‘‘‘多行注释:

取模运算:

if a % b == 0 :

print ‘yes‘

else:

print ‘no‘

整除语法: 2//1‘‘‘

importos,csv,sys

fileName=‘2013-1‘fileExt=‘.csv‘

#输入文件编码

inFileEncoding=‘utf-8‘

#输出文件编码

outFileEncoding=‘utf-8‘

#行号

rowscount=1

#分隔符号

delimiterChar=‘,‘rowLength=0#分割后文件名开始编号

filecount=0#计算文件总行数

count=-1

for count,line in enumerate(open(fileName+fileExt,‘rU‘,encoding=inFileEncoding)):passcount+= 1

#源文件名-info.txt

filename3=fileName+‘-info‘+‘.txt‘file3=open(filename3,‘w+‘,encoding=‘utf-8‘)

statinfo=os.stat(fileName+fileExt)print("\n文件名称:"+ fileName+fileExt)print("\n文件名称:"+ fileName+fileExt,file=file3 )print("文件行数:"+str(count) )print("文件行数:"+ str(count),file=file3 )print("文件大小:"+ str(statinfo.st_size//1024//1024)+"M")print("文件大小:"+ str(statinfo.st_size//1024//1024)+"M",file=file3)

strContentInput=input("请输入要分割成的文件数:")ifstrContentInput.isdigit():

contentInput=int(strContentInput)else:print("★ : 您输入的"+strContentInput+"不是数字 !",file=sys.stderr)print("★ : 您输入的"+strContentInput+"不是数字 !",file=file3)#退出脚本

sys.exit()print("分割成的文件数:"+strContentInput)print("分割成的文件数:"+strContentInput,file=file3)

splitLineCount=count//contentInputprint("每文件行数:"+str(splitLineCount))print("每文件行数:"+str(splitLineCount),file=file3)#可以用一个list包含文件对象列表#源文件名-正确列-文件序号.csv

fileList=[]

fileIndex=0print("分割后的文件名:")print("分割后的文件名:",file=file3)while fileIndex

filetmpname=fileName+‘-正确列-‘+str(fileIndex)+fileExtprint(" "+filetmpname)print(" "+filetmpname,file=file3)

filetmp=open(filetmpname,‘w+‘,encoding=outFileEncoding)

fileList.append(filetmp)

fileIndex=fileIndex+1

#源文件名-错误列.csv

filename2=fileName+‘-错误列‘+fileExt

file2=open(filename2,‘w+‘,encoding=outFileEncoding)print("分割后的文件名(列异常数据):")print("分割后的文件名(列异常数据):",file=file3)print(" "+filename2)print(" "+filename2,file=file3)

with open(fileName+‘.csv‘,newline=‘‘,encoding=inFileEncoding) as csvfile:

spamreader=csv.reader(csvfile,delimiter=delimiterChar)for line inspamreader:#列数为0时,读取第一行作为准确的列数。

if ( rowLength ==0 ):

rowLength=len(line)#列数不为0时,当前行的列数与其匹配,将匹配的和不匹配的保存到不同的文件。

else:if ( rowLength ==len(line) ):#输出到对应文件序号的文件中: 行数“整除”分割行数

if ( rowscount//splitLineCount > len(fileList)-1):print((‘,‘.join(line)),file=fileList[len(fileList)-1])else:print((‘,‘.join(line)),file=fileList[rowscount//splitLineCount])else:print((‘,‘.join(line)),file=file2)

rowscount=rowscount+1

#关闭文件

file2.close()delfile2

file3.close()delfile3

fileIndex=0while fileIndex

fileList[fileIndex].close()

fileIndex=fileIndex+1

#删除整个fileList

del fileList

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文本分类和提取关键词算法_文本内容之间的关键词提取和相似度计算

文本分类和提取关键词算法背景 Web应用程序变得越来越智能。 从网站上使用服务的日子已经一去不复返了,用户不得不填写一个巨大的表格。 假设您有一个适合书迷的网站。 在Web 2.0之前,像这样的网站曾经以诸如年龄,阅读的书籍,喜欢…

python里随机抽取样本_概率分布和抽样分布基础知识及Python实现

本文主要介绍推论统计中的概率分布和抽样分布,本文结构如下: 一、概率分布 随机变量:在一定条件下,某件事情可能发生或者不发生,这个事件就叫随机事件。例如抛硬币哪面朝上。随机变量X就是用来量化随机事件的函数,是将随机事件每一个可能出现的结果映射到数值的一个函数。…

php 创建目录_使用SMB绕过PHP远程文件包含限制

译文声明本文是翻译文章,文章原作者mannulinux,文章来源:mannulinux.org 原文地址:http://www.mannulinux.org/2019/05/exploiting-rfi-in-php-bypass-remote-url-inclusion-restriction.html译文仅供参考,具体内容表达…

eas系统服务器地址,EAS7.0EAS7.5服务端及其客户端标准配置介绍

金蝶EAS是基于JavaEE的大型企业应用。目前服务端支持以下主流软硬件环境。适用版本:EAS7.0 EAS703 EAS7.51.金蝶EAS服务端支持的软硬件环境注:标志为部署支持的环境,可以正常安装配置,但是正式运行前需联系金蝶技术支持。2.客户端…

Java的Kafka:构建安全,可扩展的消息传递应用程序

使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护。 今天尝试Okta。 当今的用户希望可以通过其计算机,手机,平板电脑或任何其他设备访问您的应用程序! …

background复合属性顺序_CSS有哪些好用的字体属性?

本文创建于2020年9月,以下为正文:CSS中有哪些字体属性呢?font:复合属性。设置或检索对象中的文本特征。font-style:设置或检索对象中的字体样式。用于定义字体的风格,如:斜体(italic…

转译和编译_10个有趣又能编译为JavaScript的语言,你用过哪些?

点击上方“IT平头哥联盟”,选择“置顶或者星标”你的关注意义重大!来源:https://www.sitepoint.com/现代应用相比普通的网页有不同的要求。但是浏览器是一个有着一套(大部分)固定可用的技术的平台,JavaScript依然是web应用的核心语…

OPC服务器如何采集设备的信息,如何将OPC服务器采集的设备数据转为MQTT方式,实现云端发布或订阅...

通过与PLC、智能仪表等硬件设备,以及OPC服务器、数据库等软件建立通讯,进行实时数据采集监控,然后将相关数据转换为数据库、OPC,以及MQTT、HTTP等多种服务接口,实现各类自动化与信息化系统软件灵活对接。MQTT智能网关案…

jboss7 关闭日志打印_使用自定义日志记录处理程序在JBoss AS 7中跟踪SQL语句

jboss7 关闭日志打印使用ORM从您的特定数据库中提取数据并让其创建和发布您必须亲自编写的所有SQL语句似乎很方便。 这就是使ORM解决方案受欢迎的原因。 但是它也有一个缺点:由于ORM为您做了很多工作,您在某种程度上失去了对生成SQL的控制,因…

微信小程序摄像头监控_微信必备黑科技小程序!

↑点击上方蓝字关注极物推荐欢迎分享到朋友圈-不花冤枉钱,历史见真谛对于喜欢购物的朋友们,这绝对是一把利器。只需把商品链接复制粘贴到上面,就可以轻松的查阅到该商品的历史价格,轻松直观的了解商品过去的价格波动,同…

无线打印 airprint 服务器,如何让 Windows 的共享打印机支持 AirPrint

对很多办公室环境来说,局域网共享打印机往往都是刚需,而如果局域网内的设备大多为 Windows 设备,通过 网络共享 的方式就可以轻松将所连接的 USB 打印机共享到局域网。但对同一个局域网内的 Apple 设备而言,因为很多打印机的 Mac …

硒测试中所需的功能和示例

所需功能是用于声明一组基本要求(例如浏览器,操作系统,浏览器版本等的组合)的类,以对Web应用程序执行自动跨浏览器测试。 当我们尝试通过Selenium自动化测试来自动化测试脚本时,我们需要考虑这些组合&…

边沿触发是什么意思_集基耦合双稳电路,集成化单稳电路,数字逻辑电路,门电路,触发器...

1).箝位器能把脉冲电压维持在某个数值上而使波形保持不变的电路称为箝位器。它也是整形电路的一种。例如电视信号在传输过程中会造成失真,为了使脉冲波形恢复原样,接收机里就要用箝位电路把波形顶部箝制在某个固定电平上。下图中反相器输出端上就有一个箝…

鲸鱼优化算法_盘点 35 个 Java 代码优化细节

代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗&#xff1…

powerbi导入地图_Power BI系列教程之powerBI功能介绍及使用导引(一)

作为从事数据分析相关工作的小伙伴,我们总会遇到一些工作是每周、每月甚至每天都是重复做的工作,这个时候我们有没有一种结构化的方法来处理这一些数据呢?答案是肯定的,微软为了满足广大职场数据分析人员的需求,开发了…

模糊搜索怎么实现_干货 | 你真的了解自己是怎么搜索的吗_01

「干货」栏目的开启是为了帮大家科普学习关于品牌出海、数字营销与跨境电商行业相关的知识,以及我们在业内会遇到的情况和一些规避的方法。第一讲搜索者我们整个搜索营销活动都是围绕搜索者展开的我们的目的是把搜索者转化为我们的销售机会所以,研究搜索…

JUnit 5和Selenium –改善项目配置

Selenium是一组支持浏览器自动化的工具和库,主要用于Web应用程序测试。 Selenium的组件之一是Selenium WebDriver,它提供客户端库,JSON有线协议(与浏览器驱动程序进行通信的协议)和浏览器驱动程序。 Selenium WebDrive…

linux shc shell脚本_详解shell脚本加密解密软件—gzese和shc

概述以我个人的需求为例,有时写一个脚本需要传密码,如果直接把密码写在脚本里会存在安全问题,一般是把密码写在脚本里,作为参数传给脚本,而保存密码的脚本,使用某种手段加密,令其不可读但是可执…

python3 for计数_python怎么实现计数?

python中实现计数的一般方法:1、使用字典解决(dict)字典计数是最常用的计数方法,逐个遍历数据结构中元素,将元素作为键,元素个数作为值进行统计,依次加入字典中。实例演示test_lst [a, b, c, d, e, f, g, a, f, s, b,…

linux 查看主板sn_如何在 Linux 上查找硬件规格

在 Linux 系统上有许多工具可用于查找硬件规格。-- Sk(作者)在 Linux 系统上有许多工具可用于查找硬件规格。在这里,我列出了四种最常用的工具,可以获取 Linux 系统的几乎所有硬件(和软件)细节。好在是这些工具在某些 Linux 发行版上默认预装。我在 Ubun…