我正在使用lxml提取与html标记关联的文本,但也将括号中的所有内容都视为标记并将其丢弃。有什么方法可以保留文本中除标准html标记以外的所有内容?from lxml import htmldata="<EXPE>(i)<i>you</i>"print(html.fragment_fromstring(data).text_content())这给出了输出'(i)you'但是所需的输出将是<Expe>(i)you我对美丽汤尝试了相同的方法,如下所示:from bs4 import BeautifulSoupsoup = BeautifulSoup(data, 'html.parser')text = soup.find_all(text=True)print(text)这也丢弃 '<Expe>'在其输出中。我在里面有很多不是html标记的文本。有没有办法不遗漏它们? 最佳答案 当您不想一定要构建完整的文档模型时,Pyparsing可以处理XML或HTML标记,而只需在此处和此处进行文本提取或操作即可。Pyparsing包括用于定义标签匹配表达式的makeHTMLTags方法以及将与任何XML或HTML标签匹配的anyOpenTag和anyCloseTag表达式。一个简单的标签剥离器可以写成:>>> import pyparsing as pp>>> anyHtml = pp.anyOpenTag | pp.anyCloseTag>>> anyHtml.suppress().transformString(data)suppress()方法采用匹配的文本,并从解析的输出中禁止显示该文本,而transformString应用每个解析表达式来处理完整的输入。将其传递给您的示例字符串将提供与BS text()方法相同的输出:>>> anyHtml.suppress().transformString(data)'(i)you'但是,您可以修改此剥离器以跳过要保留的任何标签,方法是先检查并以'〜'(pp.NotAny的快捷运算符)取反。定义一个解析表达式,该表达式描述所有您不想剥离的标签。>>> keepers = pp.MatchFirst(pp.makeHTMLTags(keeper)[0] for keeper in "EXPE SAVE OTHER".split())然后将其用作否定检查,以避免匹配您想要保留的标签:>>> (~keepers + anyHtml).suppress().transformString(data)'<EXPE>(i)you'关于python - 如何仅丢弃html标签并提取python中的关联文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59700613/ 10-14 17:36