用BeautifulSoup替换python中的文本

时间:2014-01-23 21:59:50

标签: python-2.7 beautifulsoup

我正在尝试用beautifulSoup解析一个表并删除某些行中的空格 - 所以而不是

<tr>
<td><small>15</small></td>
<td><small><small>Cat</small></small></td>
</tr>
<tr>
<td><small><small>   </small></small></td>
<td><small><small> </small></small></td>
</tr>

我想要

<tr>
<td><small>15</small></td>
<td><small><small>Cat</small></small></td>
</tr>
<tr>
<td><small><small>-</small></small></td>
<td><small><small>-</small></small></td>
</tr>

我有点设法做到这一点:

from bs4 import BeautifulSoup

soup = BeautifulSoup (open("table.html"))

for a in soup.findAll('small'):
    a.replaceWith("-")

这确实删除了空格,但它也删除了文本15和cat(我知道我已经替换了标签中的所有内容)。就我所能得到的而言。如何修复该代码,以便只用 - ?

替换空格

编辑:对不起,这是原始代码

<tr>
<td><small>15</small></td >
<td><small><small>&nbsp;</small></small></td >
</tr>
<tr>
<td><small><small>&nbsp; &nbsp;</small></small></td >
<td><small><small>&nbsp;</small></small></td >
</tr>

1 个答案:

答案 0 :(得分:3)

试一试:

from BeautifulSoup import BeautifulSoup as bs
soup = bs(open("table.html"))
for i in soup.findAll('small'):
    if i.text == "" or "&nbsp;" in i.text:
        i.string = '-'
print soup

您需要在更换前检查该值。