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

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

该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 pd
import codecs

filename = "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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值