从嘈杂的字符串中提取文本。。python

从嘈杂的字符串中提取文本。。python,python,Python,我有一些html文档,我想从中提取一个非常特殊的文本。 现在,此文本始终位于 <div class = "fix">text </div> 文本 现在,有时发生的是。。。还有其他的开场白……比如: <div class = "fix"> part of text <div something> other text </div> some more text </div> 部分文本其他文本更多文本 现在。。我想提取

我有一些html文档,我想从中提取一个非常特殊的文本。 现在,此文本始终位于

<div class = "fix">text </div>
文本
现在,有时发生的是。。。还有其他的开场白……比如:

 <div class = "fix"> part of text <div something> other text </div> some more text </div>
部分文本其他文本更多文本
现在。。我想提取所有对应的文本

 <div class = "fix">                     </div> markups??
标记??

我该怎么做

这里有一个非常简单的解决方案,它使用非贪婪正则表达式删除所有html标记:

import re
s =  "<div class = \"fix\"> part of text <div something> other text </div> some more text </div>"
s_text = re.sub(r'<.*?>', '', s)
重新导入
s=“部分文本其他文本更多文本”
s_text=re.sub(r'','',s)
然后,值为:

print(s)
<div class = "fix"> part of text <div something> other text </div> some more text </div>
print(s_text)
 part of text  other text  some more text
打印
部分文本其他文本更多文本
打印(s_文本)
部分文本其他文本更多文本

这里有一个非常简单的解决方案,它使用非贪婪的正则表达式删除所有html标记:

import re
s =  "<div class = \"fix\"> part of text <div something> other text </div> some more text </div>"
s_text = re.sub(r'<.*?>', '', s)
重新导入
s=“部分文本其他文本更多文本”
s_text=re.sub(r'','',s)
然后,值为:

print(s)
<div class = "fix"> part of text <div something> other text </div> some more text </div>
print(s_text)
 part of text  other text  some more text
打印
部分文本其他文本更多文本
打印(s_文本)
部分文本其他文本更多文本
我会使用这些库。它们是为此而构建的,只要您的数据是正确的html,它就会准确地找到您要查找的内容。他们有相当好的文档,而且非常直接,即使对于初学者也是如此。如果您的文件在web上的某个地方无法访问直接html,请使用urllib获取html

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
soup.find({"class":"fix"})
如果有多个项目,请改用“全部查找”。这应该给你你想要的(大致)

编辑:固定示例(类是一个关键字,因此不能使用通常的(attr=“blah”)

我会使用这些库。它们是为此而构建的,只要你的数据是正确的html,它就会准确地找到你要找的内容。它们有相当好的文档,而且非常简单,即使对于初学者也是如此。如果你的文件在web上的某个地方,你无法访问直接的html,请使用url获取html自由党

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
soup.find({"class":"fix"})
如果有不止一个项目,使用find_all代替。这会给出你想要的(大致)


编辑:固定示例(类是一个关键字,因此不能使用通常的(attr=“blah”)

您的意思是
document.getElementById('fix')).innerText
或只保留第一个
之前的文本,而不考虑DOM?为什么不使用像BeautifulSoup这样的html解析器?@Greg:是的,我现在正在研究它的示例。我不知道它。你的意思是
document.getElementById('fix')).innerText
或只保留第一个
之前的文本,而不考虑DOM?为什么不使用像BeautifulSoup这样的html解析器?@Greg:是的,我现在正在查看它的示例。我不知道ITI,我得到了错误text=soup.find(class=“fix”)语法错误:语法无效,指针指向最后一个“s”在类中?您好,我得到了错误文本=soup.find(class=“fix”)SyntaxError:指针指向类中最后一个“s”的无效语法?