python ElementTree写函数

时间:2011-09-07 14:33:37

标签: python elementtree

我使用python ElementTree来读取和修改我的html文件的一些内容。当我完成更改并使用ElementTree.write函数时,

1)它增加了额外的html:所有标签的前面。我该怎样避免这种情况?

2)它还增加了&我有特殊字符的地方。我该如何避免这种情况?

谢谢你, 迪夫亚。

1 个答案:

答案 0 :(得分:1)

你做不到。 ElementTree通过加载XML,解析它,并且只存储抽象表示来工作。它通过遍历抽象表示将其写入字符串,但它不记得哪些字符作为实体转义,或者元素是否存储为<foo/><foo></foo>(HTML:{ {1}}或<foo>

现在,由于ElementTree只能使用XML(而非HTML),我猜你正在使用lxml.html - 在这种情况下,它实际上会自动纠正某些形式的错误HTML,因为否则它将无法正确存储它。

处理HTML的正确方法是将完全保存的数据保存,除非你如何更改它,就是抓住记住其原始表示的标记。我使用sgmllib完成了此操作,但这并不完美 - 例如有一个<foo></foo>方法可以获取开始标记的完全内容,但没有相应的结束标记方法。无论如何,这可能还不错。

例如,要写出删除了所有段落的HTML,可以编写如下函数:

get_starttag_text

这可能需要更多的工作来不破坏输入。查看文档以获取有关所有内容的详细信息。