Python 巨大的HTML表-筛选包含字符串的行

Python 巨大的HTML表-筛选包含字符串的行,python,html,performance,html-parsing,Python,Html,Performance,Html Parsing,我有如下所示的示例HTML文档。现在,我需要使用professional作为工程师(column2)过滤所有行,并生成生成的HTML文档。但这里的问题是,我的文档包含200万行,文档大小为1GB。有谁能建议一种更快的处理方法吗 我尝试使用Python和BeautifulSoup模块进行解析,并尝试进行筛选,但处理数据需要15个多小时。。有没有更快的方法 代码: 输入: <html> <body> <table> <tr> <td>

我有如下所示的示例HTML文档。现在,我需要使用professional作为工程师(column2)过滤所有行,并生成生成的HTML文档。但这里的问题是,我的文档包含200万行,文档大小为1GB。有谁能建议一种更快的处理方法吗

我尝试使用Python和BeautifulSoup模块进行解析,并尝试进行筛选,但处理数据需要15个多小时。。有没有更快的方法

代码:

输入:

<html>
<body>
<table>
<tr>
    <td>Name</td>
    <td>Profession</td>
    <td>Address</td>
</tr>
<tr>
    <td>John</td>
    <td>Assassin</td>
    <td>JohnWick</td>
</tr>
<tr>
    <td>Tony</td>
    <td>Engineer</td>
    <td>IronMan</td>
</tr>
<tr>
    <td>Stark</td>
    <td>Engineer</td>
    <td>IronMan</td>
</tr>
<tr>
    <td>Bruce</td>
    <td>Professor</td>
    <td>Hulk</td>
</tr>
</table>
</body>
</html>

名称
职业
住址
约翰
莎辛那
约翰威克
托尼
工程师
铁人
明显的
工程师
铁人
布鲁斯
教授
残骸
输出:

<html>
<body>
<table>
<tr>
    <td>Name</td>
    <td>Profession</td>
    <td>Address</td>
</tr>
<tr>
    <td>Tony</td>
    <td>Engineer</td>
    <td>IronMan</td>
</tr>
<tr>
    <td>Stark</td>
    <td>Engineer</td>
    <td>IronMan</td>
</tr>
</table>
</body>
</html>

名称
职业
住址
托尼
工程师
铁人
明显的
工程师
铁人

是否需要保留空白/格式?这是你需要做很多次的事情,还是仅仅是一次性的

如果是一次性的工作,你也许可以做得简单一点。尝试在记事本++、升华等中打开它。使用“查找”和“替换”重新格式化,以便每个表行有一个代码行:

<tr><td>Bruce</td><td>Professor</td><td>Hulk</td></tr>
<tr><td>Stark</td><td>Engineer</td><td>IronMan</td></tr>
BruceProfessorHulk
斯塔肯工程师
(您可以不执行此步骤,但这样可以更容易地查看发生了什么)

然后,您可以查找并替换:

<tr>.*?<td>Professor</td>.*?</tr>
*?教授*?
空白行(对每个非工程师角色重复)。如果有很多专业,可以使用反向引用来更改工程师行

<tr> content </tr>
内容

内容
然后查找并替换所有行


您也可以在Excel中打开它并以这种方式进行过滤。我相信这里也有一些很好的Python解决方案,只是告诉你我是如何做到的——我在Python中处理大型文件时遇到过类似的问题,你可以在基本文本或电子表格编辑器中进行大量数据挖掘。Excel早餐吃了一百万排。

不知道,巴德,对我来说这是个合理的问题!非常感谢你的忏悔。这个简单的想法真的很有帮助。虽然在excel或notepad++崩溃时我无法使用它们,但我能够在vim编辑器中应用此想法,并在5分钟内达到预期效果。这个想法真的很有帮助。谢谢。虽然这已经解决了我的问题,但我会继续关注这篇文章,如果有任何感兴趣的用户也会建议一种编程方法。
<tr> content </tr>
<tr-keep> content </tr>