佚名通过本文主要向大家介绍了python 正则表达式,python正则表达式教程,python正则表达式语法,python3 正则表达式,python中正则表达式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:python正则表达式怎么匹配这段中文?
描述:
解决方案1:
描述:
下面这段文字,用xpath找到后,需要把意大利和西班牙两部分所包含内容分开保存,用正则表达式应该怎么写?
<div>
<p>
意大利:<br />
1、全称意大利共和国<br />
2、由南欧的亚平宁半岛及两个位于地中海中的岛屿西西里岛与萨丁岛所组成<br />
3、国土面积为301333平方公里<br />
<br />
西班牙:<br />
1、1492年10月12日独立<br />
2、是一个位于欧洲西南部的国家<br />
3、西邻同处于伊比利亚半岛的葡萄牙,北濒比斯开湾,东北部与法国及安道尔接壤,南隔直布罗陀海峡与非洲的摩洛哥相望<br />
</p>
</div>
我是这样写的,但是总是匹配不出来:
desc =sel.xpath('//div[@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('//div[@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('//div[@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)