-
pandas 读取csv文件:
出现打不开了,如下出现两个报错:
- ParserError: Error tokenizing data. C error: Expected 10 fields in line 119, saw 14
-
Exception: file is not found!
问题分析
csv文件默认的是以逗号为分隔符,但是中文中逗号的使用率很高,爬取中文数据时就容易造成混淆,所以使用pandas写入csv时可以设置参数 sep=’\t’ ,即以tab为分隔符写入。毕竟tab在中文习惯里用的很少嘛。
那这样在后面读取csv进行数据处理时,一定记得加上一个参数delimiter:
delimiter="\t"
#这样读入:
df=pd.read_csv('path',delimiter="\t")
不然你把dataframe打印出来看看就是挤在一团,没有分列的,后面对csv进行处理的时候还可能会出现标题那样的错误
此时报错2解决
参考:https://blog.csdn.net/yj928674542/article/details/75634197?utm_source=blogxgwz5
但是在通过上述方法打开csv文件后,文件打开后的样子很魔鬼。delimiter参数的加入导致所有pandas 获取列表的操作都不能使用,因为所有的列表标签都被解读为了名字为所有标签的组合的一个标签,即['labee1',label2','label3',...]。如下
然后,获取列表标签报错:
这个问题,花费2天也没有找到解决办法😭
终于在两天后不经意间确定了是delimiter参数的问题...
解决办法
#添加参数:error_bad_lines
data.read_csv(filepath, error_bad_lines=False)
#如果仍有报错可尝试添加参数2
data.read_csv(filepath, error_bad_lines=False,engine='python')
#也有人说添加参数sep=None,我尝试了也可以
data.read_csv(filepath, error_bad_lines=False,sep=None)
恢复正常:
参考1:https://blog.csdn.net/Asher117/article/details/89357932
参考2:https://www.cnblogs.com/wangshicheng/p/9747072.html
最后附上学习文档:
pandas的read_csv参数整理
pandas的to_csv()使用方法