使用beautifulsoup如何从具有多个类的元素中删除单个类

时间:2014-10-22 12:29:14

标签: python beautifulsoup

我希望从具有多个类名的元素中删除单个类名,如下所示:

<li class="name1 name2 name3">
    <a href="http://www.somelink.com">link</a>
</li>

我可以使用beautifulsoup以下列方式删除类:

soup.find(class_="name3")["class"] = ""

但这会删除所有课程,而不仅仅是我想要丢失的课程。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:1)

您可以使用生成器表达式来重建要保留的类名

s = 'name1 name2 name3'
s = ' '.join(i for i in s.split() if i != 'name3')

>>> s
'name1 name2'

答案 1 :(得分:1)

从你的html中,你可以看到,

 print soup.find(class_="name3").attrs
 {'class': ['name1', 'name2', 'name3']}

因此,soup.find(class_="name3")['class']只返回一个列表。您可以从中删除元素,因为您可以从列表中删除元素。等,

soup.find(class_="name3")["class"].remove('name1')

这将删除您想要丢失的课程。