• 【python】python编码方式,chardet编码识别库


    环境:

      python3.6  

    需求:

      针对于打开一个文件,可以读取到文本的编码方式,根据默认的文件编码方式来获取文件,就不会出现乱码。  

      针对这种需求,python中有这个方式可以很好的解决:

    解决策略:

      chardet是一个非常优秀的编码识别模块。
      chardet 是python的第三方库,需要下载和安装。
     

    下载地址:

      官方推荐下载地址:https://pypi.org/project/chardet/
     

    安装事项:

      如果采用源代码安装方法,有可能会提示缺少setuptools这个模块。
      因此这里我们采用另外一种更为方便的安装方法,不论你选择哪种安装包,将它解压得到其中的文件夹【chardet】将这个文件夹复制到【python安装根目录Libsite-packages】下,确保这个位置可以被python引用到。
      如果不能被引用到请加入环境变量。【这在windows和linux下都是适用的】
     

    开始本文:

      因使用pycharm做python的开发工作,所以使用pycharm下载安装是个更高效的选择!!
     

    1.使用pycharm安装chardet第三方库。

    左上角File->Default Settings->进入Project Interpreter【工程翻译???什么鬼,Project Depend比较贴切吧】

    2.查找chardet

    注意是chardet不是charset

    安装成功

    3.开始使用chardet查看文件文本内容的编码方式

    代码:【注意,open需要指定打开模式为'b'二进制打开,并且需要'rb'或'wb'或其他组合方式,仅使用'b'模式不够】

    import chardet
    
    
    fileName = 'E:/2/采集数据_pswf12_180大0小35750_20181206.txt'
    
    currentFile = open(fileName,mode='rb')
    content = currentFile.read()
    
    print(chardet.detect(content))

    查看结果:

    编码方式为utf-8的概率为99%

    使用chardet判断编码方式后,就可以放心采用本种编码方式去去读取文本内容而不怕报错或乱码

    import chardet
    
    
    fileName = 'E:/2/采集数据_pswf12_180大0小35750_20181206.txt'
    
    # 按照二进制只读模式 打开文件 读取并解析文本内容的编码方式
    currentFile = open(fileName,mode='rb')
    content = currentFile.read()
    print(chardet.detect(content))
    
    
    
    # 按照编码方式为  UTF-8读取整个文本内容
    currentFile = open(fileName,encoding='utf-8')
    content = currentFile.read()
    print(content)
    
    
    
    # 关闭文件
    currentFile.close()

    4.按行读取,更快

    import chardet
    
    
    fileName = 'E:/2/采集数据_pswf12_180大0小35750_20181206.txt'
    
    # 按照二进制只读模式 打开文件 仅读取一行  并解析文本内容的编码方式
    currentFile = open(fileName,mode='rb')
    content = currentFile.readline()
    print(chardet.detect(content))
    
    
    
    # 按照编码方式为  UTF-8 按行读取  整个文本内容
    currentFile = open(fileName,encoding='utf-8')
    line = currentFile.readline()
    
    while line:
        print(line)
        line = currentFile.readline()
    
    
    
    # 关闭文件
    currentFile.close()
     
     
     
     
     
  • 相关阅读:
    存储器类型区分
    语言基础(25):容器与算法
    X11-forwarding
    语言基础(24):句柄类
    Markdown(2):流程图
    剑指offer-树的子结构
    剑指offer-判断链表是否有环
    剑指offer-求链表的中间结点
    剑指offer-合并两个排序的链表
    剑指offer-反转链表
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/10318233.html
Copyright © 2020-2023  润新知