Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python正则表达式从html文件中提取文本时出现问题_Python_Html_Regex - Fatal编程技术网

使用python正则表达式从html文件中提取文本时出现问题

使用python正则表达式从html文件中提取文本时出现问题,python,html,regex,Python,Html,Regex,我正在做一个项目,需要我编写一些代码,从python中的html文件中提取一些文本 <tr> <td>Target binary file name:</td> <td class="right">Doc1.docx</td> </tr> ^我编写的示例代码用于测试是否可以提取数据。 我已经编写了几个类似的程序来从txt文件中提取几乎完全相同的文本,它们工作得很好。关于正则表达式和html,我是否遗漏了什么 关于正则表达式

我正在做一个项目,需要我编写一些代码,从python中的html文件中提取一些文本

<tr>
<td>Target binary file name:</td>
<td class="right">Doc1.docx</td>
</tr>
^我编写的示例代码用于测试是否可以提取数据。 我已经编写了几个类似的程序来从txt文件中提取几乎完全相同的文本,它们工作得很好。关于正则表达式和html,我是否遗漏了什么

关于正则表达式和html,我是否遗漏了什么

对。您忽略了一个事实,即某些HTML不能用简单的正则表达式进行解析

关于正则表达式和html,我是否遗漏了什么


对。有些HTML不能用简单的正则表达式进行解析,这一点您没有注意到。

浏览器所理解的HTML对于正则表达式来说太灵活了。属性可以以任何标记、任何顺序、大写或小写、带引号或不带引号的值弹出。特别强调标记可以显示在任何地方。空格在正则表达式中很重要,但在HTML中却不太重要,因此正则表达式中到处都是
\s*
。没有要求开始标记与结束标记匹配。一些开始标记包括尾随的“/”,这意味着它们是空标记(无正文,无结束标记)。最后,HTML通常是嵌套的,就正则表达式而言,这几乎是不可能的。

浏览器理解的HTML对于正则表达式来说太灵活了。属性可以以任何标记、任何顺序、大写或小写、带引号或不带引号的值弹出。特别强调标记可以显示在任何地方。空格在正则表达式中很重要,但在HTML中却不太重要,因此正则表达式中到处都是
\s*
。没有要求开始标记与结束标记匹配。一些开始标记包括尾随的“/”,这意味着它们是空标记(无正文,无结束标记)。最后,HTML通常是嵌套的,就正则表达式而言,这几乎是不可能的。

这是您真正想要做的,还是稍后更复杂的正则表达式的一个简单示例?如果是后者,请听取其他人的意见。如果前者:

for line in file:
      if "binary" in line:
            # do stuff

如果不起作用,您确定文件中有“二进制文件”吗?不,我不知道,
“binary”

这是您真正想要做的,还是只是稍后更复杂的正则表达式的一个简单示例?如果是后者,请听取其他人的意见。如果前者:

for line in file:
      if "binary" in line:
            # do stuff

如果不起作用,您确定文件中有“二进制文件”吗?不,我不知道,
“binary”

请,@deinst,很好的链接,读到它我笑了@哦,这是非常正确的观点。你不应该用正则表达式解析html。试试lxml或BeautifulSoup的魔力,你就再也不想回到regex了。最近的一个问题涉及如何使用BeautifulSoup做一些非常类似的事情:谢谢你推荐lxml Daniel,我来看看@博宾斯:谢谢你的链接!求求你,@deinst,伟大的链接,读到它我笑了@哦,这是非常正确的观点。你不应该用正则表达式解析html。试试lxml或BeautifulSoup的魔力,你就再也不想回到regex了。最近的一个问题涉及如何使用BeautifulSoup做一些非常类似的事情:谢谢你推荐lxml Daniel,我来看看@博宾斯:谢谢你的链接!哎哟我在想,上面的内容很简单,因为我搜索的唯一内容就是“二进制”这个词。虽然我知道使用正则表达式来处理html不是一个好主意,但在这种情况下,我不明白为什么正则表达式不匹配,因为我根本没有处理标记。@m Rubern C:你不能忽略标记。如果你的“二进制”是
binary
怎么办?哎哟。我在想,上面的内容很简单,因为我搜索的唯一内容就是“二进制”这个词。虽然我知道使用正则表达式来处理html不是一个好主意,但在这种情况下,我不明白为什么正则表达式不匹配,因为我根本没有处理标记。@m Rubern C:你不能忽略标记。如果你的“二进制”是
binary
怎么办?我本来打算用regex来解析并尝试编写简单的示例来测试,但我被说服了。我确信它看起来像是目标二进制文件名:只是不明白为什么它不起作用。我计划使用正则表达式进行解析,并尝试编写简单的示例进行测试,但我确信不是这样。我敢肯定它看起来像目标二进制文件名:只是不明白为什么它不起作用。