如何打开内部编码格式不统一的文件?

来源:互联网 发布:网上教育软件 编辑:程序博客网 时间:2024/05/18 21:10

在进行数据处理过程中,发现数据文件如下图所示:

该CSV文件的所有字段未分列,且文件过大,只能部分打开,无法手动处理

使用内置open()函数无法直接打开,怀疑文件内部编码格式不统一,经过网上查资料,发现python的codecs模块,专门用于自然语言编码转换;

codecs模块提供了open()方法,简化了对特定字符编码的StreamReader、StreamWriter和StreamReaderWriter的访问,通过encoding参数传递字符编码名称,即可获得对encoder和decoder的双向服务;

codecs.open(filename,mode='r',encoding=None,errors='strict',buffering=1)

简单来说,Python做编码转换时,会借助内部编码,转换过程为:原有编码->内部编码->目标编码,codecs模块的open()方法会统一将文件转换为内部Unicode编码格式,打开的文件不会出现编码问题导致的乱码。

如此,打开内部编码格式不统一的大文件时,可以使用如下方法:

import pandas as pdimport codecsfilename = "E:/学习相关/Python/数据样例/counter数据/counter___PM_LTE_CellCounter__100__1.csv"with codecs.open(filename,'rb', "utf-16") as f:    reader = pd.read_csv(f,sep=',',iterator=True)    loop = True    chunkSize = 100000    chunks = []    while loop:        try:            chunk = reader.get_chunk(chunkSize)            chunks.append(chunk)        except StopIteration:            loop = False            print("Iteration is stopped.")    df = pd.concat(chunks, ignore_index=True)    print(df)
原创粉丝点击