使用Beautifulsoup查找单元格数据,如果找到某个单元格值,则打印整行

2024-04-18 21:43:16 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我有一个如下表:

<tr class="tdc"><td class="myip_tdc"><a href="javascript:showIt('w115');">Account</a><br/><small>client</small></td>
<td class="tdc">Nov, 19 2015 05:18 pm </td>
<td class="tdc"><small><span style="color:green"> Check </span></small></td>
<tr class="tr"><td class="tde" colspan="6">
<div class="divl" id="wtt1266" style="display: block"><table><tr><td style="padding: 5px"><table><tr><td colspan="3"></td></tr><tr><td>
</td><td>

包含字符串“Check”的单元格就是我要查找的单元格。我假设它在寻找确切的字符串,所以也许我需要regex来处理我确实希望“checked”也计数的事实。我甚至还没到那里,但如果有人能提供洞察力,我会接受的!在

所以,我有以下代码:

^{pr2}$

所以,问题是它打印了所有的单元格(很好),但在每行后面都打印“Yay”。我只想在有“Check”的单个单元格后面打印“Yay”。我原以为if语句可以解决这个问题,但不知怎么我把逻辑搞砸了。有什么想法吗?在


Tags: 字符串stylechecktablejavascripttrclasstd
2条回答

如果你想走正则表达式的路径,这就是正则表达式

for line in tablerow:
     match = re.search("\bCheck\b", line)
     if match:
         print "Yay"

这将匹配检查但未检查

或者如果你不想让它具体化

^{pr2}$

也会有用的

解决这个问题有多种方法。在

一种想法是将一个function as a ^{} argument value传递给find()方法。该函数将剥离元素的文本并将其与Check进行比较。然后,一旦找到元素,我们就可以在树上找到find the parenttd元素:

elm = soup.find(text=lambda x: x and x.strip() == "Check")
td = elm.find_parent("td", class_="tdc")

为了扩展@Nefarii的答案,下面是如何应用单词有界正则表达式:

^{pr2}$

相关问题 更多 >