Niong 发表于 2020-12-22 10:02:42

关于清除html中vml标签问题

本帖最后由 Niong 于 2020-12-22 10:02 编辑

遇到一个问题,在处理html数据中,有许多vml的标签需要清除,只留下html的标准标签,想请大佬帮个忙。

需要处理的字符如下:


<TABLE bgColor=#ffffff border=bordercolor=#000000>
    <TBODY>
      <TR>
            <TD></TD>
      </TR>
    </TBODY>
</TABLE>
<v:stroke joinstyle="miter"></v:stroke>
<v:formulas>
    <v:f eqn="if lineDrawn pixelLineWidth 0"></v:f>
    <v:f eqn="sum @0 1 0"></v:f>
    <v:f eqn="sum 0 0 @1"></v:f>
    <v:f eqn="prod @2 1 2"></v:f>
    <v:f eqn="prod @3 21600 pixelWidth"></v:f>
    <v:f eqn="prod @3 21600 pixelHeight"></v:f>
    <v:f eqn="sum @0 0 1"></v:f>
    <v:f eqn="prod @6 1 2"></v:f>
    <v:f eqn="prod @7 21600 pixelWidth"></v:f>
    <v:f eqn="sum @8 21600 0"></v:f>
    <v:f eqn="prod @7 21600 pixelHeight"></v:f>
    <v:f eqn="sum @10 21600 0"></v:f>
</v:formulas>
<v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path>
<o:lock aspectratio="t" v:ext="edit"></o:lock>
</v:shapetype>
<o:p></o:p></SPAN></DIV>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 16pt; FONT-FAMILY: 仿宋_GB2312">
      <o:p></o:p>
    </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32pt; mso-char-indent-count: 2.0" align=right><SPAN lang=EN-US style="FONT-SIZE: 16pt; FONT-FAMILY: 仿宋_GB2312"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN></SPAN><SPAN style="FONT-SIZE: 16pt; FONT-FAMILY: 仿宋_GB2312">文:王向辉 图:岳云峰<SPAN lang=EN-US>
            <o:p></o:p>
      </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 328pt; mso-char-indent-count: 20.5" align=right><SPAN lang=EN-US style="FONT-SIZE: 16pt; FONT-FAMILY: 仿宋_GB2312">2008</SPAN><SPAN style="FONT-SIZE: 16pt; FONT-FAMILY: 仿宋_GB2312">、<SPAN lang=EN-US>9</SPAN>、<SPAN lang=EN-US>18</SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">
      <o:p></o:p>
    </SPAN></P>
<P>&nbsp;</P>


清理掉像<v:stroke>,<v:formulas>,<v:f>这样的标签

wp231957 发表于 2020-12-22 10:21:48

正则吧

笨鸟学飞 发表于 2020-12-22 16:55:14

用正则就可以了啊
不用正则也可以,
1、搜索 ---<v:
2、搜索到以后就定位了起始标志,再定位到这里搜索下一个空格或者>
3、搜到以后,这一段字符串的<后面插入/,就作为结束标志
4、起始标志和结束标志之间的字符串删除就行了
5、递归

还有一种办法,用模块BeautifulSoup的findall函数
把标签筛选出来以后直接删除就行了
页: [1]
查看完整版本: 关于清除html中vml标签问题