python文件的中文处理以及个人思路
环境:ubuntu12.04 python2.7 涉及:ascii,utf-8,gbk,gb2312
首先说下个人处理过程中遇到的问题:
任务是这样:有大概4000个txt,将他们合并到一个文件里,并且去掉原文本中的所有回车
就是
1.txt
aaaa
aaaa
aaaa
2.txt
bbbb
bbbb
bbbb
合并成
aaaaaaaaaaaa
bbbbbbbbbbbb
看起来非常非常简单。。。
但是我就调了大概5个小时,主要原因是由于文件的编码不一致。
废话不说了,开始我的思路
处理中文的基本思路
一,首先确定处理文件的大概编码
比如说90%是gb2312,10%是ascii,那么我们先把这些文件全部转换成gb2312格式
这里需要的是enca
# enconv -L zh_CN -x gb2312 filename
enconv -L zh_CN -x gb2312 文件夹/*.txt
这个过程可能遇到“Unrecognized encoding”的问题,我的处理是找到这些文件直接丢掉,这里怎么处理看你的需要了
二,python读取文件问题
这里需要了解的是python的decode 和 encode
decode:转码成python内码:unicode
encode:转码成你需要的
前面已经强制转换了编码所以这里就可以知道如何decode了
接下就是根据自己的需求encode了
比如你强制转换成gb2312,最终输出成utf-8,那就是你先decode('gb2312'),然后encode('utf-8')
这里我是等输出再转码的content.decode('gb18030','ignore').encode('utf-8') ‘ignore’是忽视出错的编码
总之就是要确保每个流程中的编码格式能在你控制中
到这基本就能处理问题。
但是,还是有蛋疼的事就是空格,回车,换行这些问题的,因为空格可以有不同的十六进制表示 我们通常意义上的回车是“\r\n”,也就是换行,回车,但是有的编码中却只有‘\n’
怎么确定类似的问题?
三.查看文件的16进制表示
用hexdump这个命令,详细参数你可以自己baidu下
hexdump -C 文件
我通过比对正确和错误文件的回车
发现正确的是‘\n’ 错误的是‘\r\n’
然后加入这个就好了
好吧,其实我就是为了安慰下我的5个小时bug过程。。。
python文件的中文处理以及个人思路的更多相关文章
- 解决vs2013下创建的python文件,到其他平台(如linux)下中文乱码(或运行时报SyntaxError: (unicode error) 'utf-8' codec can't decode byte...)
Vs2013中创建python文件,在文件中没输入中文时,编码为utf-8的,如图 接着,在里面输入几行中文后,再次用notepad++查看其编码如下,在vs下运行也报错(用cmd运行就不会): 根据 ...
- Python | 多种编码文件(中文)乱码问题解决
问题线索 1 可以知道的是,文本文件的默认编码并不是utf8. 我们打开一个文本文件,并点击另存为 2 我们在新窗口的编码一栏看到默认编码是ANSI.先不管这个编码是什么编码,但是通过下拉列表我们 ...
- Python在向CSV文件写中文时乱码的处理办法
前言 python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode.decode.当list.tuple.dict里面有中文时,打印出来的是Unicode编码,这个是无解的.对中文 ...
- day8.python文件操作
打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...
- 【Python文件处理】递归批处理文件夹子目录内所有txt数据
因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...
- python文件和元组
python文件操作 相较于java,Python里的文件操作简单了很多 python 获取当前文件所在的文件夹: os.path.dirname(__file__) 写了一个工具类,用来在当前文件夹 ...
- Python中使用中文
python的中文问题一直是困扰新手的头疼问题,这篇文章将给你详细地讲解一下这方面的知识.当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了. 先来看看pytho ...
- python 文件及文件夹操作
python 文件.目录操作(新增.移动.删除等) python 文件夹与文件操作 mport string, os, sys dir = '/var' print '----------- no s ...
- Python入门之中文乱码
python入门编码: Python 文件中如果未指定编码,有中文代码时候,在执行过程会出现报错: File "test.py", line 2 SyntaxError: Non- ...
随机推荐
- ArcEngine载入中SDE问题栅格数据
当直接加载矢量数据到IFeatureWorkspace接口可,但是,在装载门格当要传送的数据IRasterWorkspaceEx接口. 效果如下面的,对可以被添加到双击Globe在. watermar ...
- .net 伪静态、真静态 (mvc)
MVC 模式下的伪静态: 通过路由就可以搞定 首先说下路由规则,允许多个路由规则,会从上之下寻找匹配 伪静态: 如果只写一个路由 那么 所有页面都必须是 html 结尾. 如果再加一个路由 就都支持了 ...
- Java泛型解析(03):虚拟机运行泛型代码
Java泛型解析(03):虚拟机运行泛型代码 Java虚拟机是不存在泛型类型对象的,全部的对象都属于普通类,甚至在泛型实现的早起版本号中,可以将使用泛型的程序编译为在1.0虚拟机上可以执行的 ...
- Windows Phone 8.1 多媒体(2):视频
原文:Windows Phone 8.1 多媒体(2):视频 Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(2):视频 Windows Phone ...
- 我的MYSQL学习心得(十一)
原文:我的MYSQL学习心得(十一) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYS ...
- 山寨游戏的未来Apple App Store
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXF1c2hp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- 多线程编程 (2) -NSOperation
一.NSInvocationOperation 二.NSBlockOperation 三.NSOperation的其他用法 四.自定义NSOperation 1.上一讲简单介绍了NSThread的使用 ...
- 关于Android开发中导出jar包后的资源使用问题解决
我们经常遇到一个需求,就是给别人使用我们工程的时候,为了能够屏蔽代码,把代码封装成jar包提供给第三方使用,但是这样我们的资源文件怎么给对方用呢? 其实并不用这么的复杂,下面就介绍一下具体的方法 一, ...
- Android开发:怎样定制界面风格
统一的用户界面是可以使得应用程序更友好.要做到用户界面的统一,我们就必须用到风格(style)和主题(theme).OPhone系统提供了很多系统默认的风格和主题,但是很多情况下,这些不能满足我们的需 ...
- ubuntu eclipse android搭建
1.eclipse加入android adt: 终端:sudo gedit /etc/hosts 加入: #for android 173.194.72.93 dl.google.com 173.19 ...