如何删除python HTML文本中标记作为同级元素存在的所有元素

时间:2019-03-28 08:34:07

标签: python regex beautifulsoup

我需要在python中解析脏的html字符串,在其中我需要消除所有旁边带有兄弟标记的文本。

例如,我需要转换此html。

    <p class="se_textarea">
        x3C!-- SE3-TEXT { --&gt;
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        nnnnnnn
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
        <br>
    </span>
    </p>

此html。

    <p class="se_textarea">
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
       <br>
    </span>
    </p>

由于x3C!-- SE3-TEXT { --&gt;<span>的兄弟姐妹,而nnnnn是<b>标记的兄弟姐妹,因此我需要删除此纹理,而식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등是{{ 1}}标签,不需要删除它。

1 个答案:

答案 0 :(得分:0)

Whelp,这是非常具体的部分原因,因为您确实只提供了一个示例,所以我不确定会出现哪种标签,所以您有2个选择。

独立的正则表达式通常不是最适合html的,但是我希望这会有所帮助。 BeautifulSoup或lxml最终可能会更好。

使用re.sub(对于Python3),如果格式相对一致,则可以使用距离,因此,我要说的是替换任何以<开头的文本(如果以7开头)或更多空格

>>> import re



>>> string = '''<p class="se_textarea">
        <span>
            <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
            nnnnnnn
            <br>
        </span>
        <span>
            <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
           <br>
        </span>
        </p>'''



>>> print(re.sub('(?m)\n[\ ]{7,}(?!<)[\S]+(?=\n|$)', '', string))


    #OUTPUT
    <p class="se_textarea">
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
        <br>
    </span>
    </p>

或者您可以使用特定的正则表达式并在必要时替换标记名称

>>> import re



>>> string = '''<p class="se_textarea">
        <span>
            <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
            nnnnnnn
            <br>
        </span>
        <span>
            <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
           <br>
        </span>
        </p>'''



>>> print(re.sub(r'(<span>[\S\s]*?<[\S\s]*?>[\S\ ]*?</[\S\s]*?>[\s]*?)([\S\s]*?)(\n[\ ]+<)', r'\1\3', string))


    #OUTPUT
    <p class="se_textarea">
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
        <br>
    </span>
    </p>
相关问题