`
san_yun
  • 浏览: 2684103 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

python模块之codecs: 自然语言编码转换

 
阅读更多

python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理。
    有一点需要清楚的是,当python要做编码转换的时候,会借助于内部的编码,转换过程是这样的:
        原有编码 -> 内部编码 -> 目的编码
    python的内部是使用unicode来处理的,但是unicode的使用需要考虑的是它的编码格式有两种,一是UCS-2,它一共有65536个码 位,另一种是UCS-4,它有2147483648g个码位。对于这两种格式,python都是支持的,这个是在编译时通过--enable- unicode=ucs2或--enable-unicode=ucs4来指定的。那么我们自己默认安装的python有的什么编码怎么来确定呢?有一个 办法,就是通过sys.maxunicode的值来判断:

import  sys
print  sys.maxunicode


    如果输出的值为65535,那么就是UCS-2,如果输出是1114111就是UCS-4编码。
我们要认识到一点:当一个字符串转换为内部编码后,它就不是str类型了!它是unicode类型:

=   " 风卷残云 "
print  type(a)
=  a.unicode(a,  " gb2312 " )
print  type(b)


输出:
<type 'str'>
<type 'unicode'>

这个时候b可以方便的任意转换为其他编码,比如转换为utf-8:

=  b.encode( " utf-8 " )
print  c


c输出的东西看起来是乱码,那就对了,因为是utf-8的字符串。
    好了,该说说codecs模块了,它和我上面说的概念是密切相关的。codecs专门用作编码转换,当然,其实通过它的接口是可以扩展到其他关于代码方面的转换的,这个东西这里不涉及。

# -*- encoding: gb2312 -*-
import  codecs, sys

print   ' - ' * 60
#  创建gb2312编码器
look   =  codecs.lookup( " gb2312 " )
#  创建utf-8编码器
look2  =  codecs.lookup( " utf-8 " )

=   " 我爱北京 "

print  len(a), a
#  把a编码为内部的unicode, 但为什么方法名为decode呢,我的理解是把gb2312的字符串解码为unicode
=  look.decode(a)
#  返回的b[0]是数据,b[1]是长度,这个时候的类型是unicode了
print  b[ 1 ], b[0], type(b[0])
#  把内部编码的unicode转换为gb2312编码的字符串,encode方法会返回一个字符串类型
b2  =  look.encode(b[0])
#  发现不一样的地方了吧?转换回来之后,字符串长度由14变为了7! 现在的返回的长度才是真正的字数,原来的是字节数
print  b2[ 1 ], b2[0], type(b2[0])
#  虽然上面返回了字数,但并不意味着用len求b2[0]的长度就是7了,仍然还是14,仅仅是codecs.encode会统计字数
print  len(b2[0])


    上面的代码就是codecs的使用,是最常见的用法。另外还有一个问题就是,如果我们处理的文件里的字符编码是其他类型的呢?这个读取进行做处理也需要特殊的处理的。codecs也提供了方法.

# -*- encoding: gb2312 -*-
import  codecs, sys

#  用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode
bfile  =  codecs.open( " dddd.txt " ' r ' " big5 " )
# bfile = open("dddd.txt", 'r')

ss 
=  bfile.read()
bfile.close()
#  输出,这个时候看到的就是转换后的结果。如果使用语言内建的open函数来打开文件,这里看到的必定是乱码
print  ss, type(ss)
分享到:
评论

相关推荐

    python自然语言编码转换模块codecs介绍

    Python的codecs模块是一个专门用于编码转换的模块,它能够帮助Python处理各种自然语言编码的转换工作。在深入了解codecs模块之前,我们需要先了解一些基础概念。Python内部处理字符串时使用的是一种名为unicode的...

    新编码转换大全模块+应用例程.rar

    - **转换工具**:如iconv、Notepad++、Python的`codecs`库等,可以方便地进行编码转换。 - **转换过程**:从源编码读取数据,解码成统一的内部表示(如Unicode),再以目标编码重新编码。 3. **编程语言中的编码...

    新编码转换大全.rar

    编码转换的工具和方法多样,例如使用编程语言内置的函数(如Python的`codecs`模块,Java的`Charset`类),或者使用专门的转换软件(如Notepad++的“编码”菜单,或是在线转换工具)。在进行编码转换时,需谨慎操作,...

    完整版新编码转换大全模块+应用例程.rar

    在IT领域,编码转换是一个非常重要的主题,尤其是在处理多种数据格式和语言时。"完整版新编码转换大全模块+应用例程.rar" 提供的资源很可能是一个全面的工具集,包含各种编码转换的代码模块以及相关的应用示例,...

    mac文件编码转换

    - 如果你熟悉编程,Python、Java、Node.js等语言都有库可以处理编码转换,例如Python的`codecs`模块,Java的`Charset`类。 6. **理解编码** - 理解字符编码如ASCII、UTF-8、GBK等的基本概念,以及它们在不同语言...

    一种基于Python实现中文编码格式转换工具的源码

    4. 使用`codecs`模块进行编码转换。 5. 将转换后的字节数据转化为16进制字符串。 6. 输出16进制表示的结果到终端或保存到文件。 这样的工具对于处理乱码问题、分析数据或者在不同系统间传输文本文件时非常有用。...

    批量转换c文件编码格式python脚本

    在进行计算机编程和项目协作时,经常会遇到文件编码格式不一致的问题,尤其是在处理C语言源代码文件时。...同时,借助Python的模块化编程特性,可以灵活地应对各种编码转换场景,保证转换过程的安全性和可靠性。

    易语言调用API实现编码转换

    7. 扩展学习:除了易语言,其他编程语言也有类似API调用的方式,如C#的`System.Text.Encoding`类,Python的`codecs`模块等。对比不同语言的实现方式,有助于深化对编码转换的理解,并提高跨平台开发的能力。 总之,...

    批量文本编码转换

    2. **Python编程**:Python是进行文本处理和编码转换的常用语言,其内建的`codecs`模块提供了读写不同编码文件的功能,如`open()`函数的`encoding`参数可以指定文件的编码。 3. **批量操作**:通过遍历目录,使用os...

    python:输出中文的开头编码

    最后,对于初学者,在编写Python代码时,确保了解Python的标准库中关于编码处理的模块,如`codecs`模块提供了对编码和解码的操作,可以帮助用户以指定的编码读写文本数据,这对于处理非UTF-8编码的文本文件尤其有用...

    文件编码转换器源码

    在源代码实现中,可能会用到如Java的`java.nio.charset`包,C#的`System.Text.Encoding`类,Python的`codecs`模块等编程语言提供的内置库来处理编码转换。这些库提供了方便的API,如`CharsetDecoder`和`...

    编码转换器(编码互转)

    7. **工具与库**: 有许多编程语言提供了内置的函数或库来支持编码转换,如Python的`codecs`模块,Java的`Charset`类等。此外,还有许多图形界面工具,如Notepad++,允许用户在文件的编码之间轻松切换。 8. **挑战与...

    完整版新编码转换大全.rar

    例如,Python有`codecs`模块,Java有`java.nio.charset`包,C#有`System.Text.Encoding`类等,这些都能帮助我们进行编码转换。 "完整版新编码转换大全.rar"可能包含了这些工具的介绍、使用教程、源代码示例,或者是...

    一个 Python 脚本,去掉 C++ .h 头文件中的注释部分,并将文件编码转换为 UTF-8

    2. 文件编码转换:不同操作系统和开发环境默认的文件编码可能不同,但UTF-8因其广泛支持而成为实际开发中的首选。在Python脚本中,处理编码转换需要确保文件读取和写入时指定正确的编码格式。 3. Python脚本的跨...

    Unicode编码转换源码

    例如,在Python中,可以使用`codecs`模块的`encode`和`decode`函数,而在Java中,可以使用`java.nio.charset`包中的`CharsetEncoder`和`CharsetDecoder`类。 在实际开发中,理解编码转换的重要性是至关重要的,尤其...

    python模块介绍大全

    ### Python模块介绍大全 Python作为一门强大的编程语言,其丰富的标准库是其一大特色。本文将根据提供的部分内容,深入解析Python中的多个模块及其用途,帮助读者更好地理解和掌握这些工具。 #### 一、数据持久化...

    简繁体及编码转换(源码)

    - **编码转换库**:Python的`codecs`模块提供了编码转换功能,其他编程语言也有类似库,如Java的`java.nio.charset.CharsetEncoder`。 5. **批量转换** 为了提高效率,该项目支持批量转换,这意味着可以一次性...

    模板编码转换

    5. **工具与库**:许多编程语言都有专门用于处理编码转换的库,如Python的`codecs`模块、Java的`CharsetEncoder`和`CharsetDecoder`,以及Node.js的`iconv-lite`模块。了解如何使用这些工具是关键。 6. **跨平台...

    python第三方库文档

    - codecs:字符串编码和解码的模块。 - difflib:用于比较序列并找出序列之间的差异。 - string:处理文本的模块,包含各种字符串常量。 - StringIO和cStringIO:使用文件式API操作文本缓冲区。 - re:正则表达式...

Global site tag (gtag.js) - Google Analytics