zoukankan      html  css  js  c++  java
  • 关于Python正则表达式的问题

     

     代码

    #! /usr/bin/env python
    #
    coding=utf-8
    import re
    str
    =r'<docitem key="founded_place"><![CDATA[中国 广东 深圳]]></docitem>'
    r
    =re.compile(r'<docitem key="(.*)">(.*)</docitem>')
    = r.match(str)

    print m.group(0)
    print m.group(1)
    print m.group(2)

    print '==========================================='

    str2
    =m.group(2)
    str2
    =str
    print str2
    r2
    =re.compile(r".*<!\[CDATA\[(.*?)]]>")
    m2 
    = r2.match(str2)
    print m2.group(1)

    <docitem key="founded_place"><![CDATA[中国 广东 深圳]]></docitem>

    founded_place
    <![CDATA[中国 广东 深圳]]>
    ===========================================
    <docitem key="founded_place"><![CDATA[中国 广东 深圳]]></docitem>
    中国 广东 深圳

    这里有和perl正则表达式不同的地方 ,如果在perl中,模式串为(r"<![CDATA[(.*?)]]>")即可,但是在Python中,前面必须加上".*",才能正常使用,还有"["必须加反斜线转义。最终如下式所示:

    (r".*<!\[CDATA\[(.*?)]]>")

    另外一个问题是Python对于编码问题处理的不是很好,很多时候不同编码的字符需要改变编码方式

    #! /usr/bin/env python

    #coding=utf-8

    import sys

    reload(sys)

    sys.setdefaultencoding('gbk')

    import re

    pchinese=re.compile(ur'([\u4e00-\u9fa5]+)+?',re.U)

    s=u'12345测试用字符串67890,45这是另一个44哈'

    m=pchinese.findall(s)

    if m:

        print( '|'.join(m))

    else:

        print( 'no found!')

    #! /usr/bin/env python

    #coding=utf-8

    #! /usr/bin/env python

    #coding=utf-8

    import re

    import sys

    reload(sys)

    sys.setdefaultencoding('gbk')


    str1=r'<docitem key="founded_place"><![CDATA[中国 广东 深圳]]></docitem>'

    #str1=r" CDATA[中国 广东 深圳]"

    #str1=unicode(str1, 'utf8')

    print type(str1)


    re2=r".*CDATA\[(.*?)\]"

    #re2=unicode(re2, 'utf8')

    #print type(re2)


    r= re.compile(re2)        #[\u4e00-\u9fa5]

    m = r.match(str1)


    print m.group(0)

    print m.group(1) 

  • 相关阅读:
    如何使不同时区的时间与京8区一致?(JS实现)
    再论递归
    如何实现keep-alive
    [小tips]使用vscode,根据vue模板文件生成代码
    gulp-load-task 解决 gulpfile.js 过大的问题
    《Vue 编程房内考》
    前端开发笔试题汇总
    HTTP状态码及其含义 503 500 401 200 301 302
    IE, FF, Safari前端开发常用调试工具
    DOCTYPE与浏览器模式详解(标准模式&混杂模式)
  • 原文地址:https://www.cnblogs.com/xuxm2007/p/1823507.html
Copyright © 2011-2022 走看看