python2.7 - python正则表达式怎么匹配这段中文?
天蓬老师
天蓬老师 2017-04-17 16:03:37
[Python讨论组]

下面这段文字,用xpath找到后,需要把意大利和西班牙两部分所包含内容分开保存,用正则表达式应该怎么写?

<p class="des">
    <p>
        意大利:<br />
        1、全称意大利共和国<br />
        2、由南欧的亚平宁半岛及两个位于地中海中的岛屿西西里岛与萨丁岛所组成<br />
        3、国土面积为301333平方公里<br />
        <br />
        西班牙:<br />
        1、1492年10月12日独立<br />
        2、是一个位于欧洲西南部的国家<br />
        3、西邻同处于伊比利亚半岛的葡萄牙,北濒比斯开湾,东北部与法国及安道尔接壤,南隔直布罗陀海峡与非洲的摩洛哥相望<br />
    </p>
</p>

我是这样写的,但是总是匹配不出来:

desc =sel.xpath('//p[@class="des"]').extract()[0]
item['italy'] = re.search('意大利:(.*?)西班牙',desc,re.S).group(1)
item['spain'] = re.search('西班牙:(.*?)</p>',desc,re.S).group(1)

提示信息是:
备注:网页是gbk编码

AttributeError: 'NoneType' object has no attribute 'group'
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
黄舟

你缺了跨行匹配

如果你的desc是str

desc =sel.xpath('//p[@class="des"]').extract()[0]
item['italy'] = re.search('意大利:(.*?)西班牙',desc,re.S | re.M).group(1)
item['spain'] = re.search('西班牙:(.*?)</p>',desc,re.S | re.M).group(1)

如果你的desc是unicode

desc =sel.xpath('//p[@class="des"]').extract()[0]
item['italy'] = re.search(u'意大利:(.*?)西班牙',desc,re.S | re.M).group(1)
item['spain'] = re.search(u'西班牙:(.*?)</p>',desc,re.S | re.M).group(1)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号