Re.sub在XML的<ds:Signature>节点上不起作用

时间:2019-08-08 21:17:58

标签: regex xml python-3.x

我正在研究一种从XML文件中删除数字签名的方法。乍一看似乎很容易(删除元素-问题出在哪里?),但是lxml很难删除以“ ds”开头的元素,因为它无法将其识别为名称空间。我决定将XML文档转换为字符串变量,并使用re.sub()摆脱整个子字符串,以包括两个边界为开头和结尾。

不幸的是,尽管在我看来相同的代码在Find and remove a string starting and ending with a specific substring in python上运行良好,但似乎对我不起作用。

这是我的作品:

首先,我在SO上找到了经过调整的示例:

        import re
        s='dasdasdsafs<ds:Signature>[image : image name : image]vvfd gvdfvg </ds:Signature>elo dfvgd'
        re.sub(r'\<ds:Signature>.*?</ds:Signature>','',s)
        >>>>'dasdasdsafselo dfvgd'

然后,我的代码:

        import re
        file_in = open("filename.xml", 'r') #the input is pretty-printed XML file
        tmp = file_in.read()
        upd = re.sub(r'\<ds:Signature>.*?</ds:Signature>','',tmp)
        print(upd)

令我沮丧的是,“ print(upd)”返回的值与“ print(tmp)”相同,包括整个“ ds:Signature”节点,而我当时期望Signature容器消失了。知道错误在哪里吗?

0 个答案:

没有答案