你好,我是zhenguo

今天跟大家分享一个遇到的挺狗血的问题,读入csv文件关于分隔符的问题。

1

使用pandas读入csv文件后,发现列没分割开,所以将sep参数调整为\t,发现还是没分割开,再试空格,再试\s+,即各种空白字符组合,有几例能分隔开,但是还有些列无法分割开。

左思右想,不得其解。那就去查查csv文件有没有自动解析出分隔符的工具,其实这种工具并不难做,把每行的分隔符规律找一遍,按照不同概率给出不同的分隔符可能。

网上并没有找到,一般网上没有找到答案的问题,主要分两类,要么这个问题的关联领域是极其小众的,要么这个问题本不是问题,可能是因为犯傻导致的极其低级错误而出现的问题。

很明显读个csv列无法分割不属于小众问题,所以应该是犯傻导致。

果不其然,等我再三观察、在群里讨论哈佛哥提醒了我一句,才意识到读入文件没有分割,也就是行1列的数据格式,所以问题出在读入文件上。

2

作为延伸,我想说下csv文件一个被人诟病的问题,正是由于分割符导致。

如下文件a.csv,分隔符是逗号,你注意看Hi,pythoner单元格,它的取值中含有一个逗号

等我使用pandas读入此文件时,会发生什么:

import pandas as pd
pd.__version__  # '1.2.4'
pd.read_csv('a.csv', index_col=False)

读入后,Hi,pythoner单元格的取值被截断为Hi

如果多个单元格存在多于1个逗号,因为列无法对其还会抛异常,为此read_csv还提供一个参数error_bad_lines,专门丢弃这种含有多个逗号的行,这种错误在大数据量时尤其容易出现,为了第一时间读入数据往往将error_bad_lines设置为False,即丢弃这种多逗号的行。

如果csv文件的分隔符是\t或其他,也同样面临一样的问题,如果分隔符恰好出现在单元格中,这种错误是不可避免的。

3

如果你的数据恰好又大量出现了分隔符的行,这就需要引起重视了。

为此比较保险的一种做法是,替换单元格中出现的csv文件的分隔符为其他符号,如分隔符为逗号,替换单元格的逗号为空格;如为\t,替换单元格的\t为逗号。

这样经过一遍替换处理后,就不会再出现数据缺失、有些行被过滤的问题。


我正在视频号精心打造从零学Python的短视频,目前观众已突破1万1千人,已经播出到第80集,敬请关注我-程序员zhenguo,这是第80集:

点击观看

读CSV和狗血的分隔符问题,附解决方法!相关推荐

  1. hp服务器如何ghost系统安装,专家亲授惠普(HP)笔记本安装不了GHOST系统该怎么办?(附解决方法)...

    理论上来说专家亲授惠普(HP)笔记本安装不了GHOST系统该怎么办?(附解决方法),有些初来乍到的小伙伴可能都不知道什么是GHOST系统把,其实它就是将GHOST文件复制到电脑进行操作系统的快速安装, ...

  2. mysql adminer 导入csv_mysql导入csv的4种报错的解决方法

    以此悼念我今天踩过的4个坑-- 坑一:local的错 报错: error 3948 (42000): loading local data is disabled; this must be enab ...

  3. 某个应用导致html文件,某个应用导致你的默认浏览器设置出现问题(补丁又闯祸:Windows 10默认应用被重置 附解决方法)...

    某个应用导致你的默认浏览器设置出现问题(补丁又闯祸:Windows 10默认应用被重置 附解决方法),哪吒游戏网给大家带来详细的某个应用导致你的默认浏览器设置出现问题(补丁又闯祸:Windows 10 ...

  4. 【经验分享】突然我的SM.MS的图床没法访问了(内附解决方法)

    [经验分享]突然我的SM.MS的图床没法访问了(内附解决方法) 一大早写文章,发现Markdown里的图片全部都不能成功加载了,这个的确挺头疼的! 文章目录 1 说一说现象 2 简单排查一下 3 查找 ...

  5. 获取服务器信息目录失败是怎么回事,获取服务器列表失败...(是怎么回事)附解决方法...

    获取服务器列表失败...这种是什么错误,是怎么回事呢?我相信很多成人都遇到过这种错误,无论你是玩家还是开的GM,既然有问题,那么比如就会有解决的方法,今天我们就说说获取服务器列表失败...(是怎么回事 ...

  6. python读取读excel,日期变成了数字,解决方法记录

    目录 1 问题描述 2 解决方案 3 后续解决措施 4 延伸,使用 xlrd 读取excel时出现数字的解决方法 5 参考文章 记录一下最近碰到的一个小问题. 1 问题描述 目标:使用Django从E ...

  7. 计算机读卡器突然无法识别,读卡器突然读不出来是怎么回事 有什么解决方法 - 驱动管家...

    我们知道移动设备包括有u盘.移动硬盘.但是有的时候我们会通过读卡器来读取手机内存卡或者相机内存卡.那么说到读卡器会出现读卡器读卡读不出来的现象,那么读卡读不出来是怎么回事呢?读卡器读不出来解决方法如下 ...

  8. 微信小程序云开发CMS内容管理平台csv上传乱码或失败的解决方法

    一.新建Excel并编辑数据: 二.Excel 编辑好后另存为csv文件(直接导入微信小程序云开发数据库会出现中文乱码): 三.csv文件直接改后缀名为.txt,然后用记事本打开(如首行出现空字段需删 ...

  9. 板框导入_板框结构导入有问题?这几个问题最常见,附解决方法!

    对于一些比较复杂的结构,Altium的处理能力有限,通常采用AutoCAD来进行设计,然后在Altium中执行菜单栏中"文件"→"导入"→DWG/DXF命令,选 ...

最新文章

  1. html5行级标签,8、html5哪些标签时块级、行内、行内块?2021-01-30
  2. 深度解读NLP文本情感分析Pipeline
  3. keras中的mini-batch gradient descent (转)
  4. 正态分布某一点的概率怎么算_笔记|复习金融计量中概率随笔1(样本推整体)
  5. python第五篇:Linux上将txt导入mysql
  6. 基于 vue+JsPlumb 实现大数据流水线拓展流程工作台(vue-flow-topology)
  7. 双侧检验的p值和单侧检验_t检验的时候怎么区分是单侧检验还是双侧呢?
  8. c语言时间换算结构体9,C语言实现时区转换函数的实例
  9. 【c语言】(函数)利用麦克劳林公式求sinx,cosx,tanx
  10. leetcode 306 累加数(js)
  11. ant 的详细的入门教程
  12. 什么是基因测序,为什么需要云计算
  13. python获取登录按钮_用Python实现一个最新QQ办公版(TIM)的登录界面
  14. 基于观测器的T-S模糊系统故障分析simulink仿真
  15. 步进电机控制(Proteus仿真+代码
  16. 现代密码学期末复习26问
  17. 6.tendermint默克尔树
  18. 最新kali之curl(一)
  19. 小米12sPro和小米12SUltra哪个值得买 两者配置对比
  20. SciPy中的optimize.minimize实现受限优化问题

热门文章

  1. Python简单实现microbit传球小游戏
  2. 量词辖域扩张和收缩律的8个等价式 根本理解
  3. (数据分析)Python-matpoltlib库-绘制条形图
  4. 【从入门到精通 项目1】项目经理带你-零基础学习C/C++
  5. 联考素描头像怎么才能画到高分?联考新手必看!
  6. Objective C 类别(Category)与类扩展(Extensions)
  7. 基于Lattice XO2-4000HC FPGA核心板及电子森林综合训练底板的ADC数字电压表及OLED显示设计(Verilog)
  8. Multisim14.0 简易交通灯设计
  9. char **和char* []区别,char *和char []区别
  10. 拼图代码-两张图片拼接