正则表达式匹配问题python
我如何提取中间的数字价格与文字:<spanclass="price">16000<spanclass="danwei"><spanclass="price">待定<spa...
我如何提取中间的数字价格与文字:<span class="price">16000<span class="danwei"><span class="price">待定<span class="danwei"> --------#################-------------
以下是我写的正则表达式:pattern = re.compile(r'<span class="price">(.*?)<span class=\"danwei">')
fwprices = re.search(pattern,fw)
------我写的表达式哪里错了?不会别乱说,谢谢,只是想学习 展开
以下是我写的正则表达式:pattern = re.compile(r'<span class="price">(.*?)<span class=\"danwei">')
fwprices = re.search(pattern,fw)
------我写的表达式哪里错了?不会别乱说,谢谢,只是想学习 展开
2个回答
展开全部
你写的正则表达式没有错,只是你用的Python函数re.search()只能匹配一次,如果要匹配多次需要用re.findall()函数,它返回一个list.改正后完整的Python程序如下
import re
fw = '<span class="price">16000<span class="danwei"><span class="price">待定<span class="danwei">'
pattern = re.compile(r'<span class="price">(.*?)<span class=\"danwei">')
result = re.findall(pattern,fw)
print(result)
追问
我用的anaconda的spyder编译的,问题主要是:我写的表达式,把整个标签都给取了下来,包括标签,名属性等部分,我就一直不明白,就算我用search也没法将单独匹配的一个数值取出,能请教一下吗?
追答
re.search()函数返回的是与正则表达式匹配的第一个数据的对象match_obj,要用match_obj.group(1)取出第一捕获组的数据,因为你要的是价格price,所以要取第一捕获组的数据,下面是完整的Python代码
import re
fw = '<span class="price">16000<span class="danwei"><span class="price">待定<span class="danwei">'
pattern = re.compile(r'<span class="price">(.*?)<span class=\"danwei">')
fwprices = re.search(pattern,fw)
print(fwprices.group(1))
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询