环境:

  python3.6

需求:

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

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

解决策略:

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

下载地址:

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

安装事项:

  如果采用源代码安装方法,有可能会提示缺少setuptools这个模块。
  因此这里我们采用另外一种更为方便的安装方法,不论你选择哪种安装包,将它解压得到其中的文件夹【chardet】将这个文件夹复制到【python安装根目录\Lib\site-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()
 
 
 
 
 

【python】python编码方式,chardet编码识别库的更多相关文章

  1. python批量修改文件内容及文件编码方式的处理

    最近公司在做tfs迁移,后面要用新的ip地址去访问tfs 拉取代码  ,所以原来发布脚本中.bat类型的脚本中的的ip地址需要更换 简单说下我们发布脚本层级目录 :每个服务站点下都会有一个发布脚本 . ...

  2. 洗礼灵魂,修炼python(56)--爬虫篇—知识补充—编码之url编码

    其实在最前面的某一篇博文里,是绝对提过编码的,有ASCII,有UTF-8,有GB2312等等,这些我绝对说过的. url编码 首先,Http协议中参数的传输是"key=value" ...

  3. 刨根究底字符编码之十——Unicode字符集的字符编码方式CEF

    Unicode字符集的字符编码方式CEF 一.字符编码方式CEF的选择 1. 由于Unicode字符集非常大,有些字符的编号(码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须使用 ...

  4. Mysql 更改编码方式

    Mysql 更改编码方式 --查看编码方式 show variables like 'char%'; --设置编码方式 set character_set_server=utf8;

  5. 刨根究底字符编码之十——Unicode字符集的编码方式以及码点、码元

    Unicode字符集的编码方式以及码点.码元 一.字符编码方式CEF的选择 1. 由于Unicode字符集非常大,有些字符的编号(码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须 ...

  6. UNICODE UTF编码方式解析

    先明确几个概念 基础概念部分 1.字符编码方式CEF(Character Encoding Form) 对符号进行编码,便于处理与显示 常用的编码方式有 GB2312(汉字国标码 2字节) ASCII ...

  7. VLQ & Base64 VLQ 编码方式的原理及代码实现

    目录 VLQ Base64 VLQ VLQ VLQ (Variable-length quantity)是一种通用的,使用任意位数的二进制来表示一个任意大的数字的一种编码方式. 编码实现: ** 对数 ...

  8. python chardet模块查看字符编码方式

    电脑配置:联想笔记本电脑 windows8系统 Python版本:2.7.8 本文章撰写时间:2014.12.25 作者:陈东陈 阅读说明: 1.本文都是先解释,后放图片: 2.文中斜体部分要么为需要 ...

  9. python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)

    一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...

随机推荐

  1. 当父级绑定了DataContext之内的数据源时,子级想重新绑回DataContext

    <Grid x:Name="NewDeploymentObjectPanel" Background="White" DataContext=" ...

  2. ZOJ 3203 灯泡

    题面 相比 wildleopard 的家,他的弟弟 mildleopard 比较穷.他的房子是狭窄的而且在他的房间里面仅有一个灯泡.每天晚上,他徘徊在自己狭小的房子里,思考如何赚更多的钱.有一天,他发 ...

  3. 3种高效的Tags标签系统数据库设计方案分享

    需求背景 目前主流的博客系统.CMS都会有一个TAG标签系统,不仅可以让内容链接的结构化增强,而且可以让文章根据Tag来区分.相比传统老式的Keyword模式,这种Tag模式可以单独的设计一个Map的 ...

  4. javascript研究小组知识库

    http://hzjavaeyer.group.iteye.com/group/wiki?category_id=0

  5. 如何安装pycharm

    Ubuntu系统安装PyCharm教程(详细图文) 参考(http://jingyan.baidu.com/article/60ccbceb4e3b0e64cab19733.html)  

  6. bzoj 1143

    求最长反链裸题 补充一点知识.. 链                  :    D 中的一个子集 C   满足 C 是全序集  及C中所有元素都可以比较大小 反链              :   ...

  7. Android-Activity的切换效果

    Android-Activity的切换效果 Android-Activity的切换效果 Activity有一个默认的切换效果,但是有时候单一的切换效果未免单调,Activity的切换效果也是我们可以自 ...

  8. U盘制作Win7安装盘的方法

    Windows 7 USB/DVD download tool 微软官方说明:http://www.microsoftstore.com/st ... Win7_usbdvd_dwnTool 下载地址 ...

  9. python3 开发面试题(面向对象)6.6

    """ 封装.继承.多态 1. 谈谈你对面向对象的理解? 2. Python面向对象中的继承有什么特点? 3. 面向对象深度优先和广度优先是什么? 4. 面向对象中sup ...

  10. Linux C语言编程学习笔记 (1)进程控制入门

    想进行Linux系统开发已经很久了,一直没有付诸实践.今日终于开始学习Linux下的C语言编程,研究一天,终于大概弄明白了Linux系统进程管理的一些基本概念和编程方法,总结下来以方便大家学习和自己实 ...