Python模式匹配
我现在正在把一个旧的bash脚本转换成Python脚本,并且想增加一些新功能。我已经完成了大部分工作,但在Python的模式匹配上遇到了很多麻烦。
在我之前的脚本中,我下载了一个网页,然后用sed命令提取我想要的元素。匹配的方式是这样的(这是我想要的其中一个值):
PM_NUMBER=`cat um.htm | LANG=sv_SE.iso88591 sed -n 's/.*ol.st.*pm.*count..\([0-9]*\).*/\1/p'`
它会匹配被<span class="count"></span>
包裹的数字,前面是“olästa pm”这个短语。我正在处理的标记内容是:
<td style="padding-left: 11px;">
<a href="/abuse_list.php">
<img src="/gfx/abuse_unread.png" width="15" height="12" alt="" title="9 anmälningar" />
</a>
</td>
<td align="center">
<a class="page_login_text" href="/pm.php" title="Du har 3 olästa pm.">
<span class="count">3</span>
</td>
<td style="padding-left: 11px;" align="center">
<a class="page_login_text" href="/blogg_latest.php" title="Du har 1 ny bloggkommentar">
<span class="count">1</span>
</td>
<td style="padding-left: 11px;" align="center">
<a class="page_login_text" href="/user_guestbook.php" title="Min gästbok">
<span class="count">1</span>
</td>
<td style="padding-left: 11px;" align="center">
<a class="page_login_text" href="/forum.php?view=3" title="Du har 1 ny forumkommentar">
<span class="count">1</span>
</td>
<td style="padding-left: 11px;" align="center">
<a class="page_login_text" href="/user_images.php?user_id=162005&func=display_new_comments" title="Du har 1 ny albumkommentar">
<span class="count">1</span>
</td>
<td style="padding-left: 11px;" align="center">
<a class="page_login_text" href="/forum_favorites.php" title="Du har 2 uppdaterade trådar i "bevakade trådar"">
<span class="count">2</span>
</td>
我有点犹豫要不要发这个,因为感觉我在要求很多,但能不能请大家帮我想个办法在Python中解析这个?我已经抓狂了,正则表达式对我来说实在太难了(抱歉,开个玩笑)。我花了几个小时在实验和阅读Python的正则表达式手册,但就是搞不定。
为了让事情更清楚,我需要7个不同的表达式来匹配<span class="count"></span>
中的数字。比如,我需要找到未读私信的数量(“olästa pm”)。
4 个回答
1
4
你自己不会去解析HTML代码。你会使用Python里自带的HTML解析器来处理这些HTML。