python bs4分析器类中的Bug? #/usr/bin/env python #-*-编码:utf-8-*- 从bs4导入BeautifulSoup 进口稀土 doc=“Text空文本” 汤=美汤(doc) 对于汤中的span.find_all('span',class_uu=re.compile(“\s_u[0-9]+”)): span.decompose()

python bs4分析器类中的Bug? #/usr/bin/env python #-*-编码:utf-8-*- 从bs4导入BeautifulSoup 进口稀土 doc=“Text空文本” 汤=美汤(doc) 对于汤中的span.find_all('span',class_uu=re.compile(“\s_u[0-9]+”)): span.decompose(),python,regex,beautifulsoup,Python,Regex,Beautifulsoup,需要找到带有的所有标记并从DOM中删除。但是这段代码由于某种原因无法工作 BeautifulSoup为您将类拆分为一个列表;正则表达式在多个类上不匹配类是一组此类属性之一,请参阅 您必须使用自定义函数使用正则表达式对多个类进行筛选: #!/usr/bin/env python # -*- coding: utf-8 -*- from bs4 import BeautifulSoup import re doc = "<div>Text text <span class='_

需要找到带有
的所有标记并从DOM中删除。但是这段代码由于某种原因无法工作

BeautifulSoup为您将类拆分为一个列表;正则表达式在多个类上不匹配<代码>类是一组此类属性之一,请参阅

您必须使用自定义函数使用正则表达式对多个类进行筛选:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup
import re
doc = "<div>Text text <span class='_ _3'>empty</span> text</div>"
soup = BeautifulSoup(doc)
for span in soup.find_all('span' , class_=re.compile("_\s_[0-9]+")) :
    span.decompose()
def underscored_class_span(elem, numbered=re.compile(u'_\d').match):
    if elem.name != 'span': return False
    classes = elem.get('class', [])
    return u'_' in classes and any(numbered(c) for c in classes)

for span in soup.find_all(underscored_class_span):
    span.decompose()