Python 自制html修复程序处理通用标记

Python 自制html修复程序处理通用标记,python,html,parsing,Python,Html,Parsing,下面的代码所做的是,它接受一个set open标记和一个end标记,如果存在任何该类型的未关闭标记,它将关闭它们。问题是,它不会处理字体标记,因为字体标记的内容比它本身更多。我在想,有一种方法可以使用regex,让它先匹配标记,然后将它传递给这个html修复程序,这样它就可以处理任何类型的标记。有什么建议吗?正则表达式可能看起来像是在我后面重复:不要使用正则表达式来解析HTML。不要使用正则表达式来解析HTML。不要使用正则表达式来解析HTML。不要使用正则表达式来解析HTML。不要使用正则表达

下面的代码所做的是,它接受一个set open标记和一个end标记,如果存在任何该类型的未关闭标记,它将关闭它们。问题是,它不会处理字体标记,因为字体标记的内容比它本身更多。我在想,有一种方法可以使用regex,让它先匹配标记,然后将它传递给这个html修复程序,这样它就可以处理任何类型的标记。有什么建议吗?正则表达式可能看起来像是在我后面重复:不要使用正则表达式来解析HTML。不要使用正则表达式来解析HTML。不要使用正则表达式来解析HTML。不要使用正则表达式来解析HTML。不要使用正则表达式来解析HTML.lol整个要点是这样它就不会使用regext。使用regex的唯一方法是查找包含参数的标记。然后它会将这些标记传递给我的解析器。这对任何具有属性a、div、p等的标记都不起作用,对空标记也不起作用,例如。它也不适用于其他标记(如foo)中的任何标记。除此之外,可能还有更多。编写自己的HTML解析器来处理非法标记汤是很困难的,即使对于HTML的一小部分也是如此。尝试用简单的字符串操作而不是构建解析器更难。它将用于聊天界面,字体标记将是唯一可接受的标记,至于属性标记,这就是为什么我以前想匹配它们,并通过解析器发送匹配的标记。在python中,我不能在string和regex对象之间进行操作,例如string.countregexobject。但是如果有这样的方法,那么它可以处理标记内部的属性
def check_html(otag, etag, text):
    ret = ['f', text, otag, etag] if text.count(otag) != text.count(etag) else ['a', text, otag, etag]
    return fix_html(ret)

def fix_html(x):
    grade, text, otag, etag = x
    ret = [otag + text if text.endswith(etag) else s for s in text.split()] if grade == 'f' else text
    ret = [text + etag if text.startswith(otag) else s for s in ret] if grade == 'f' else text
    return ret[0] if grade == 'f' else ret