zoukankan      html  css  js  c++  java
  • 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来完成相同的功能。

  • 相关阅读:
    Java StringTokenizer Example
    java 删除字符串中的特定字符
    [Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容
    Uniform resource name
    [Python]网络爬虫(一):抓取网页的含义和URL基本构成
    coco2dx 精灵类
    window和nodejs作用域区别(待续)
    ubuntu开机遇到-您的当前网络有.local域,我们不建议这样做而且这与AVAHI网络服务探测不兼容。该服务已被禁用
    ruby中的reject和reject!
    ruby中将数组转换成hash
  • 原文地址:https://www.cnblogs.com/lacozhang/p/2199717.html
Copyright © 2011-2022 走看看