前期在处理一些数据时需频繁读取一些EXCEL、TXT、CSV及TSV文件,但读取时总会出现各种错误提示,让我抓狂不已,后经过不断试错,终于发现错误原因主要来自两个方面,一是分隔符的问题,另一个是字符编码的问题,解决了这两个问题,读取出错的机率会大幅下降,另外附带讲下写文件出现乱码的问题,以下就这三个方面进行阐述。
读取文件 1.1 分隔符 EXCEL文档是用专门的读取指令pd.read_excel(),所以可不添加分隔符参数;但CSV与TSV文件一定要加上分隔符参数,这两种文件的分隔符会有多种形式,如逗号、左斜杠、空格(可能多个)等,具体要分析下原文件使用的是哪种形式,确定后即可用参数seq=’,‘或delimiter=’,'来作为读取文件的分隔符号。 1.2 字符编码 若文档不含中文,一般使用UTF-8编码格式即可解决问题,但若包含中文就会复杂许多,我使用GBK、GBK2312、UTF-8等常用编码格式都有成功读取过数据,特别是EXCEL文档不加编码格式大部分也能读取,但CSV与TSV文件就没那幸运了,总有出现乱码的情况,后发现使用编码GB18030,所有乱码问题都迎刃而解,具体参数为encoding=‘GB18030’。 1.3 相关代码如下 import pandas as pd pd.read_csv(r'E:\提取商户交易数据20200429.tsv',encoding='gb18030',delimiter='\t') 写文件 有时将DataFrame写入CSV文件后用EXCEL打开该文件时,会出现中文为乱码的情况,这时需在写入命令中增加一个参数encoding=“utf_8_sig”,这样就可以解决乱码问题,相关代码如下(其中total是DataFrame名): total.to_csv(r'E:\2020年上半年结算单数据明细_商户.csv',encoding="utf_8_sig",index=False)