0

我已经将 word 文件转换为 html 文件,但是有一个问题,MS-word 会自动为页面添加一些样式。

例如

<div align="center"></div>
<p style=""></p>
<table cellpadding="0">

<tr><img src="...."></img></tr>

</table>

我想输出为

 <div></div>
<p></p>
<table>

<tr><img src="...."></img></tr>

</table>

我不希望删除 img 内联样式。

提前致谢

update:  if it is very hard to keep img style in the file. please give me the code excluding that part. it is very urgent for me and i cant edit 1000 pages manually 
4

2 回答 2

1

我建议你使用elementtree。解析文件删除所有不需要的样式属性并写入文件。

使用 elementtree 这应该是 5 班轮。

于 2012-08-16T09:28:19.240 回答
0

如果您想删除已知标签列表的样式,我认为没有必要使用全权重 HTML 解析器。就像是

expr = r'((?<=<div)|(?<=<p))[ ]+.*?>'
html_text = re.sub(expr,'>',html_text)

工作得很好。当然,您将使用要替换的标签数组来生成 (?<=

如果您有要删除的样式标签列表,那就更容易了。只需生成一个表达式

expr = r' (style|align|myStyleTag)=".*?"'

与 re.sub。

如果您需要动态组合,请使用解析器。

针对 OP 的评论进行编辑:

不幸的是,lookbehind 需要固定大小的表达式,所以 <.* 或类似的将不起作用。如果您没有固定的标签列表,最好使用预先存在的框架。

一个丑陋的方法是这样的:

expr = "("
for i in range(1,8): ## or whatever the max/min tag lengths are
    expr += "(?<=<[a-zA-Z]{" + str(i) + "})|"
expr = expr[:-1] + ")[ ]+.*?>"

但那是相当糟糕的风格。

于 2012-08-16T09:35:49.227 回答