如何根据特定条件从BeautifulSoup实例中删除字符串?

时间:2017-02-18 16:36:17

标签: python html replace beautifulsoup

for tables in apple_tables:
    text = tables.getText()
    a = len(re.findall(r"\d", text))
    b = len(text)
    print(a/b)
    print(text)
    if a/b >= .1:
        apple_soup_16.remove? replace?  #I need all text in this instance completely gone

这是我到目前为止所拥有的。基本上,我需要发生的是,如果每个表中有超过10%的字符(我有一个列表)是数字,我需要从BeautifulSoup实例的循环实例中删除整个表。
当它已经在BeautifulSoup中时,这可能吗?如果没有,在将它放入BS之前我该如何去做呢?

谢谢,我希望我能清楚地知道我在这里要做什么。我想我大部分时间都遇到过BeautifulSoup库的问题,我还没有用过它。

编辑:以下是apple_tables中每个表格的前两个示例:

(<table cellpadding="0" cellspacing="0" style="FONT-FAMILY:TIMES NEW ROMAN;FONT-SIZE:10PT;MARGIN-LEFT:AUTO;MARGIN-RIGHT:AUTO;WIDTH:100%;BORDER-COLLAPSE:COLLAPSE;TEXT-ALIGN:LEFT;"><tr><td colspan="1"></td></tr><tr><td style="WIDTH:100%;"></td></tr><tr><td style="VERTICAL-ALIGN:BOTTOM;PADDING-LEFT:2PX;PADDING-TOP:2PX;PADDING-BOTTOM:2PX;PADDING-RIGHT:2PX;BORDER-TOP:1PX SOLID #000000;BORDER-BOTTOM:1PX SOLID #000000;"><div style="OVERFLOW:HIDDEN;HEIGHT:5PX;FONT-SIZE:10PT;"><font style="FONT-FAMILY:INHERIT;FONT-SIZE:10PT;"> </font></div></td></tr></table>,
 <table cellpadding="0" cellspacing="0" style="FONT-FAMILY:TIMES NEW ROMAN;FONT-SIZE:10PT;MARGIN-LEFT:AUTO;MARGIN-RIGHT:AUTO;WIDTH:19.53125%;BORDER-COLLAPSE:COLLAPSE;TEXT-ALIGN:LEFT;"><tr><td colspan="1"></td></tr><tr><td style="WIDTH:100%;"></td></tr><tr><td style="VERTICAL-ALIGN:BOTTOM;PADDING-LEFT:2PX;PADDING-TOP:2PX;PADDING-BOTTOM:2PX;PADDING-RIGHT:2PX;BORDER-BOTTOM:1PX SOLID #000000;"><div style="OVERFLOW:HIDDEN;HEIGHT:5PX;FONT-SIZE:10PT;"><font style="FONT-FAMILY:INHERIT;FONT-SIZE:10PT;"> </font></div></td></tr></table>)

apple_soup_16是多个公司的整个html的当前完整BS实例。我需要从该BeautifulSoup对象中删除表的实例大于10%的数字的任何地方。将BeautifulSoup代码放在这里不应该是必要的,因为这些表直接来自BS对象。每张桌子都在汤里,但我只需要删除10%的桌子。

1 个答案:

答案 0 :(得分:0)

您可以使用clear()

tables.clear()

decompose

tables.decompose()