pandas read_csv批量读取不同编码格式csv文件

工作原因需要批量读取大量的csv文件,但由于编码格式不同read_csv总是报错,
换了很多编码格式gbk、iso-8859-1、utf-8、UTF-8-SIG、GB18030在网上也找了很多高人的方法但都没有满足我的要求。
后来我发现单一的编码格式解决不了我的问题,关键点在中文编码格式的判断。
明明csv保存的格式是gb2312,但用gb2312编码格式去读反而报错。
经过反复试验终于搞定,下面附上代码:

def read_csv_diy(paths):
f = open(paths,"rb")
encode = cr.detect(f.read())["encoding"] #得到文件的编码方式
if encode == 'utf-8': #按文件编码方式读取文件
data = pd.read_csv(paths,encoding="utf-8",sep=',')
elif encode == 'GB2312': #中文处理方式比较复杂,gbk如果报错的话使用gb18030方式读取
try:
data = pd.read_csv(paths,encoding="gbk",sep=',')
except UnicodeDecodeError:
data = pd.read_csv(paths,encoding="GB18030",sep=',')
elif encode == 'UTF-8-SIG':
data = pd.read_csv(paths,encoding="UTF-8-SIG",sep=',')
elif encode == "iso-8859-1":
data = pd.read_csv(paths,encoding=="gbk",sep=',')
else :
print(encode)
return data

image.png

不知道有没有更简单的方法,欢迎指正。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。