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中都是通用的。

  • 相关阅读:
    密码学
    MD5
    计算机基础之操作系统
    python中列表之间求差集、交集、并集
    Python语言中各种进制相互转换
    计算机基础
    bzoj2705 [SDOI2012]Longge的问题
    bzoj3160 万径人踪灭
    codeforces 528D Fuzzy Search
    杜教筛 && bzoj3944 Sum
  • 原文地址:https://www.cnblogs.com/crafter/p/2262935.html
Copyright © 2011-2022 走看看