• python处理文件编码


    对于存储自然语言的文件,有可能采用了不同的编码,例如汉字的编码就有多种,UTF-8,GB2312,GB18030,ISO-8859等字符编码格式。当处理各种文件的时候,就需要在各种文件格式之间转换,由于UTF-8字符编码格式兼容于ASCII,且多字节编码,不存在大小端的问题,可以使用已有的C语言库字符串处理函数,处理起来较为方便。现在来看看将其他格式(GB2312,GB18030)转换成UTF-8。

      使用python处理文件格式转换,需要使用codecs模块。使用是,先import codecs 。在codecs可以使用open,lookup函数来打开文件。open(filename,mode,encoding,errors,buffering),需要给出filename,mode和encoding,其余的参数有默认值,不用管的。encoding就是要打开的文件的字符编码方式。当从文件读出的内容使用的就是python的内部标示,即unicode标示法。lookup(encoding),返回一个CodecInfo类的实例,encoding是字符编码名称,('utf-8','gb2312')。

      lookup返回值含有相当多的内容,实例中的encode,decode,用来进行格式转换。encode用于将内部的UCS-4转换成调用lookup是给出的encoding格式。decode用于将调用lookup的encoding格式的字符串转换成UCS-4格式的字符串。

      lookup返回的实例中可以使用streamreader,streamwriter两个类,明显reader,writer都是用于按照encoding来读取和写入相应的文件,参数就是一个file-like的对象了。reader是按照encoding从stream读入数据,返回的是unicode字符串。writer将unicode字符串转换成encoding格式写入stream。必须获取streamreader类得一个实例,例如a= x.streamreader(file-object) ,然后就可以使用a来完成相应的读功能。

      在codecs模块中,还有decode和encode两个函数,decode(obj,encoding),这个函数的作用就是将按照encoding编码的obj转换成unicode。encode(obj,encoding),这个函数的作用就是将按照ucs-4编码的obj转换成encoding格式。

      事实上codecs也提供了一些方便的函数,例如'utf_32_be_decode', 'utf_32_be_encode', 'utf_32_decode', 'utf_32_encode', 'utf_32_ex_decode',等等。可以使用严格的decode,encode来完成相同的功能。

  • 相关阅读:
    一些遇到的错误的总结:
    ThinkPHP add save delete的返回说明
    一些实用函数 :去除html标签//去除空白//截取汉字
    group_concat
    linux环境下使用mkdir()函数无法创建目录的问题
    报错:Namespace declaration statement has to be the very first statement in the script的解决方法
    ThinkPHP中,字段更新加1的几种写法
    小狼毫输入法安装与简单配置(windows系统)
    对win10和win11的吐嘈
    看死亡诗社时有的一点新想法
  • 原文地址:https://www.cnblogs.com/lacozhang/p/2199717.html
Copyright © 2020-2023  润新知