zoukankan      html  css  js  c++  java
  • python中的中文处理

    下文讲的是基本原则:先解码成unicode,在程序中使用unicode,需要输出时再编码。
    http://cocre.com/?p=461

    下文是全攻略,有原理有实例:
    http://www.sqlite.com.cn/MySqlite/11/395.Html

    下面是一个小的实例,在正则表达式中使用中文:

    所有汉字的Unicode编码范围:[\u4e00-\u9fa5]
    Python中的str对应的范围:
    Unicode区间:([\xB0-\xF7][\xA1-\xFE])+
    所有GB2312-80编码:([\xA1-\xFE][\xA1-\xFE])+
    所有中文空格:(\xA1\xA1)+

    在Ulipad Shell中:

    >>> import re
    >>> zh_re = re.compile(r'([\xB0-\xF7][\xA1-\xFE])+')
    >>> zh_re.search('中文')
    <_sre.SRE_Match object at 0x03DCBBA0>
    >>> zh_re.search(u'中文')
    <_sre.SRE_Match object at 0x03DCBC20>
    >>>


    在CMD中:

    >>> import re
    >>> zh_re = re.compile(r'([\xB0-\xF7][\xA1-\xFE])+')
    >>> zh_re.search('中文')
    <_sre.SRE_Match object at 0x00B778E0>
    >>> zh_re.search(u'中文')
    >>> zh_re.search(u'中文'.encode('utf-8'))
    <_sre.SRE_Match object at 0x00B77B60>
    >>>


    之所以与Ulipad Shell中不同,是因为Ulipad Shell默认是Unicode编码,而CMD中默认是GBK,所以必须将Unicode字符串人工编码成bytestrings才能匹配。

    或者这样:

    >>> zh_re = re.compile(ur"[\u4e00-\u9fa5]+")
    >>> zh_re.search(u"中文")
    <_sre.SRE_Match object at 0x00B05EC8>
    >>>


    这种方式在所有的Shell中都是通用的。

  • 相关阅读:
    晕,又要学新东西了!
    十一之旅(1)
    结束放假◎!
    容颜总有一天会慢慢老去
    JS里在光标位置插入字符
    放假啦,暂别七天
    好久没来,小小的Happy一下
    唉唉唉
    关于Timer使用,为什么程序会死掉
    于Excel文件上传读取数据的问题
  • 原文地址:https://www.cnblogs.com/crafter/p/2262935.html
Copyright © 2011-2022 走看看