2017-10-12 38 views
-1

我有一个HTML文件,我使用lxml和BeautifulSoup(从HTML转换为文本)处理。不知何故,下面的格式不正确的HTML将其放入文本中,我想将其删除。我尝试在文本字符串中匹配诸如“<。+>”之类的内容,但它不起作用。我想删除的字符串是这样的:Python的正则表达式不能在字符串上工作

string = """ .trb_m_b:befoe{ctent:'Hide comments'}.trb_c_so{padding-top:10px;min-height:500px}||<div class="trb_c_so" data-role=c_container><div class="s_comments" data-sitename="ffff" data-content-id="jksjkj7878787" data-type=promo-comment data-publisher="ronctt"></div></div>""" 

我想它的确切代码:

pattern = re.compile(r'<.+>') 
if (pattern.search(string)): 
    print ("Found") 

然而,正则表达式不匹配字符串,但它应该。

为什么会这样?

谢谢。

编辑。看起来问题不是正则表达式,而是一些非常奇怪的东西。我在列表中有这个字符串,它是最后一个项目。当我第一次循环播放它时,出于某种原因,程序从未击中它。但是,它第二次。我不明白它的原因。

EDIT2。事实证明,问题是我试图删除循环中的元素(如果他们匹配正则表达式),这是不允许的。我重写了代码以使用列表理解,现在它工作正常。

+0

美丽的汤将关闭任何未公开的标签... –

+0

我不想关闭标签,只是想删除有问题的文本。 –

回答

0

我相信你想要的东西是这样的:

import re 
data = re.findall("\<(.*?)\>", string) 
+0

这也行不通。 –

0

你的HTML不是一个完整的HTML标签,如果你真的想你给的字符串匹配,您可以使用此: re.findall("\.trb_m_b.*?></div></div>", string)

+0

对,我意识到这不是一个完整的标签。然而,我给出的正则表达式应该匹配它,不是吗?由于字符串内部有一个HTML标签。我想要一个更一般的表达式,以便可以匹配任何可能出现的格式不正确的HTML,而不仅仅是这个特定的字符串。 –

相关问题