(python) 求解一个python正则表达式问题

有一个文本

<html>
<div class="timeandicon"> <div class="cf"> <dl> <dd class="mar-b8"><i class="time-icon"></i><em>5课时 39分钟</em> </dd> <dd class="zhongji"> <i class="xinhao-icon2"></i><em>中级</em> </dd> </dl> <em class="learn-number">578人学习</em> </div>
</div>
<div class="timeandicon"> <div class="cf"> <dl> <dd class="mar-b8"><i class="time-icon"></i><em>14课时 37分钟</em> </dd> <dd class="zhongji"> <i class="xinhao-icon2"></i><em>中级</em> </dd> </dl> <em class="learn-number">50228人学习</em> </div>
</div> <html>

想把他匹配进一个字典test
test[keshi]=[5课时 39分钟,14课时 37分钟]
test[level]=[中级,中级]这样的

看了慕课的教程。里面说
title_node=soup.findi,class_=”time-icon”.find”em”
视频中是这样写的 但是我运行出错是什么原因,还有没有别的方法去匹配??

title_node=soup.findi,class_="time-icon".find"em"
你这个是 bs4 的 css 选择器,不是 正则。

<i class="time-icon"></i><em>5课时 39分钟</em>

你仔细看标签元素的层次关系, iem 是平级的,
em 并不是 i 的子元素。
所以,你的 find 方法是找不到 em 的。


给个正则的例子:

html=<html>
<div class="timeandicon"> <div class="cf"> <dl> <dd class="mar-b8"><i class="time-icon"></i><em>5课时 39分钟</em> </dd> <dd class="zhongji"> <i class="xinhao-icon2"></i><em>中级</em> </dd> </dl> <em class="learn-number">578人学习</em> </div>
</div>
<div class="timeandicon"> <div class="cf"> <dl> <dd class="mar-b8"><i class="time-icon"></i><em>14课时 37分钟</em> </dd> <dd class="zhongji"> <i class="xinhao-icon2"></i><em>中级</em> </dd> </dl> <em class="learn-number">50228人学习</em> </div>
</div> <html> import re ptn = re.compiler<div[^>]*?class="cf".*?<dl>.*? r<em>[^<]*?</em>.*? # 课时 r<em>[^<]*?</em>.*? # 级别 r</dl>.*?</div> ,re.S
mch = ptn.findallhtml
keys = 课时, 级别
info = [dictzipkeys, data for data in mch]
printinfo

结果:

[{级别: 中级, 课时: 5课时 39分钟}, {级别: 中级, 课时: 14课时 37分钟}]

你的文本里是 timeandicon

发表评论

电子邮件地址不会被公开。 必填项已用*标注