用Python表达式删除HTML中的React标记

2024-04-26 00:25:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python正则表达式删除HTML文件中的一些react标记。HTML文件的一部分如下所示。你知道吗

<span data-reactid="57">Price/Book</span><!-- react-text: 58 --> <!-- /react-text --><!-- react-text: 59 -->(mrq)<!-- /react-text --><sup aria-label="KS_HELP_SUP_undefined" data-reactid="60"></sup></td><td class="Fz(s) Fw(500) Ta(end)" data-reactid="61">8.36</td>

我的Python正则表达式代码如下所示。你知道吗

cleandUpCode = re.sub(r'<!-- react-text: \d{1,2,3} -->', '', sourceCode)

sourceCode变量包含原始HTML源代码,其中包含所有的react垃圾。我可以运行代码并执行它。但是当我将输出传输到一个文件并检查它时,所有的垃圾标签仍然存在。你知道吗

有人能帮忙吗?你知道吗

事先多谢。你知道吗

-弗兰克


Tags: 文件代码text标记datahtmlpricereact
3条回答

如果您想用python浏览HTML文档,那么使用一个名为beautifulsoup4的库更简单、更实用。你知道吗

你可以从:https://pypi.python.org/pypi/beautifulsoup4下载, 或者,您可以使用“Pip”在命令行中编写pip install beautifulsoup4来下载它。而不是将其包含到项目from bs4 import BeautifulSoup

现在你应该从中提取文本,如果你想这样做的话。你知道吗

from bs4 import BeautifulSoup

    with open "text.txt" as text:
    str = '<span data-reactid="57">Price/Book</span><!  react-text: 58  > <!  /react-text  ><!  react-text: 59  >(mrq)<!  /react-text  ><sup aria-label="KS_HELP_SUP_undefined" data-reactid="60"></sup></td><td class="Fz(s) Fw(500) Ta(end)" data-reactid="61">8.36</td>'
    soup = BeautifulSoup(str, 'lxml')
    soup = soup.get_text()
    text.write(str(soup))

您只需要包含react标记中可能出现的最大位数。另外,要删除react的两个实例(有数字和没有数字),可以添加|以尝试匹配其中一个:

cleandUpCode = re.sub(r'<!  react-text: \d{1,3}  >|<!  /react-text  >', '', sourceCode)

输出:

<span data-reactid="57">Price/Book</span> (mrq)
<sup aria-label="KS_HELP_SUP_undefined" data-reactid="60">
 </sup></td><td class="Fz(s) Fw(500) Ta(end)" data-reactid="61">8.36</td>

将代码的\d{1,2,3}更改为\d{1,3}。量词{1,3}重复前面的项目1到3次。你知道吗

Regex Quantifier: http://www.rexegg.com/regex-quickstart.html#quantifiers

检查此项:Python Regex Demo

更新: 如果要删除除特定的react-text之外的所有<! [^>]*/?react-text[^>]* >,请改用:<! [^>]*/?react-text[^>]* >。你知道吗

相关问题 更多 >