python无法读取txt文件中文-python读取中文txt文本的方法-程序员宅基地

对于python2.7

字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码成unicode,再从unicode编码成另一种编码。

先用一些编辑器(如editplus )看一下你的txt文件保存的是utf-8,还是gb2312或其他的。当你读行时可以这样

line = (file1.readline()).decode("utf-8").encode("gb2312")或

line = (file1.readline()).decode("gb2312").encode("utf-8")

注意:txt使用utf8编码的时候会默认在文件开头插入三个不可见字符。这个是windows用来判断txt编码是否为utf8的。所以如果你直接使用decode("utf-8")的话是得不到正确结果的。

必须先判断前三个字符是否是windows插入的那三个。这个python已经定义了一个常量了,可以直接和这个常量比较,如果一样就删除前三个字符然后再decode。

import codecs

data = open("Test.txt").read()

if data[:3] == codecs.BOM_UTF8:

data = data[3:]

print data.decode("utf-8")

延伸:

因为decode的函数原型是decode([encoding], [errors="strict"]),可以用第二个参数控制错误处理的策略,默认的参数就是strict,代表遇到非法字符时抛出异常;

如果设置为ignore,则会忽略非法字符;

如果设置为replace,则会用?取代非法字符;

如果设置为xmlcharrefreplace,则使用XML的字符引用。

对于Python3

python3下比较简单,打开的时候指定encoding参数即可:open("txt.txt", encoding="gbk").read()。

以上这篇python读取中文txt文本的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39903477/article/details/109622219

智能推荐

codeforces 86D. Powerful array(莫队算法)-程序员宅基地

文章浏览阅读294次。D. Powerful arraytime limit per test5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAn array of positive integersa1, a2, ..., anis given. Let us ...

Oracle rman备份和恢复常规操作_oracle rman的u%-程序员宅基地

文章浏览阅读321次。1 备份恢复参数文件RMAN> backup spfile format '/tmp/bak/spfile_%U_%T.ora'关闭数据库,并删除参数文件(…/dbs路径下的ora文件)RMAN> shutdown immediate;rm $ORACLE_HOME/dbs/*.ora启动数据库报错,恢复配置文件RMAN> startup nomountRM..._oracle rman的u%

python报错:TypeError: ‘list‘ object is not callable_typeerror: '_virtuallist' object is not callable-程序员宅基地

文章浏览阅读558次。python报错:TypeError: ‘list‘ object is not callable_typeerror: '_virtuallist' object is not callable

【向题看齐】408之计算机组成原理概念记忆总结_408 计算机组成复习-程序员宅基地

文章浏览阅读4.6k次,点赞27次,收藏194次。、【向题看齐】408之计算机组成原理概念记忆总结_408 计算机组成复习

消息队列RocketMQ_rocketmq topic怎么分布在多个broker上-程序员宅基地

文章浏览阅读1.5k次。一、生产过程:1、获取路由消息,本地缓存不存在,重新获取(获取Topic发布信息:tryToFindTopicPublishInfo) 传入topic、消息字符串,根据传入的topic查询是否在本地缓存中,不在从NameSerer中获取topic并存入本地缓存:GET_ALL_TOPIC_LIST_FROM_NAMESERVER; (当topic不存在时,之前的版本可以默认自动创..._rocketmq topic怎么分布在多个broker上

第16节 综合实验—部署域,在域中部署DHCP、WEB和文件共享服务器_文件共享服务器加入到域共享服务器中-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏10次。综合实验:(1)域:在win2008中构建公司的域,域名为qf.com。(2)DHCP服务器:在win2003中构建DHCP服务器。(3)WEB服务器:在win2003中构建WEB服务器,要求发布两个站点,站点分别为oa.qf.com、CRM.qf.com。(4)文件共享服务器:在win2003中构建文件共享服务器,IT部门域用户可以读取文件、CEO域用户拥有完全控制权。(5)客户机:winxp为客户机,可以自动获取IP地址、加入域、无需输入账号密码可以直接访问Web服务器和共享服务器。_文件共享服务器加入到域共享服务器中

随便推点

第四章-信息率失真函数(一)_信息率失真函数计算-程序员宅基地

文章浏览阅读1.8w次,点赞10次,收藏41次。第4章 信息率失真函数主要内容 :4.1 平均失真和信息率失真函数4.2 离散信源和连续信源的R(D)的计算 4.1 平均失真和信息率失真函数4.1.1 失真函数假如某一信源X,输出样值为xi,xi{a1,…an},经过有失真的信源编码器,输出Y,样值为yj,yj {b1,…bm}。如果xi=yj,则认为没有失真;如果xi  yj,那么就产生了失真。_信息率失真函数计算

适配iPhone X遇到的问题_incompatible connection types item positioned with-程序员宅基地

文章浏览阅读130次。今天适配iPhone X遇到的问题,如下图,cell中间多出一条。造成这个问题的原因,就是创建的控件中有小数,用int 转换一下即可_incompatible connection types item positioned with a100mm spool length f

Java批量下载并打成压缩包zip格式_java批量下载文件打成zip包-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏8次。Java批量下载并打成压缩包zip格式废话不多说直接上代码@GetMapping("/download")//, String[] urls public void downloadFiles(@RequestParam("ids") String ids,HttpServletRequest request, HttpServletResponse response) { /*String[] urls = new String[]{""};*/ String[_java批量下载文件打成zip包

linux开源监控工具,十款开源免费监控软件-程序员宅基地

文章浏览阅读2.1k次。监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。有许多非常好的服务器监控解决方案,而为了省去你寻找方案的麻烦1. Performance Co-PilotPerformance Co-Pilot,简称PCP,是一个系统性能和分析框架。它从多个主机整理数据并实时的分析,帮你识别不..._linux 消息提醒工具 免费开源

通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器)_jk触发器74112仿真-程序员宅基地

文章浏览阅读2.9w次,点赞33次,收藏184次。上篇博文写了用仿真和综合来认识D触发器(通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)),这篇博文采用完全并行的方式来认识JK触发器。让我们迅速进入正题吧。J-K触发器的Verilog HDL程序代码//边沿JK触发器module jk_trigger(clk, j, k, q);input clk, j, k;output q;reg q;wire..._jk触发器74112仿真

2017年sfdc工作总结_Duplicate, Matching Rule_sfdc duplicate-程序员宅基地

文章浏览阅读182次。在创建一条Record时,如果我们需要对它的重复性做筛选,可以用到Duplicate, Matching Rule。但是一定要给足权限,注意他的Field是保证使用者对这个字段是有访问权限的。否则会出现,不具备字段权限的人创建Record不走Rule的尴尬局面。更新:假设现在限定一个Store下不允许出现两个相同Email 的Account,那么如果是创建的两个Account填写的Store是系统..._sfdc duplicate

推荐文章

热门文章

相关标签