【发布时间】:2020-05-07 13:44:46
【问题描述】:
我浏览了互联网,但找不到我的问题的有效答案。如果它是size="10.439"to size="10.238",我需要替换 XML 文件属性值。基本上,我需要在整个 XML 文件中更改该数字。所以代码是:
import lxml.etree as etree
import re
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse('fe3.xml', parser)
re.sub(r'size="10.439"','size="10.238"', tree)
但它不起作用,我必须做什么才能让它起作用?
如果有帮助,size 属性位于 XML 的标签 text 中。像这样:
<pages>
<page>
<textbox>
<text size = "10.439"> hello
</text>
</textbox>
</page>
</pages>
【问题讨论】:
-
这里不需要任何正则表达式。
re.sub(r'size="10.439"','size="10.238"', tree)与tree.replace(r'size="10.439"','size="10.238"')相同。请注意,您没有在替换后将值分配给变量。 -
我得到 AttributeError: 'lxml.etree._ElementTree' 对象没有属性 'replace'
-
这就是您所说的“不起作用”。您只能使用带有字符串的正则表达式。您需要使用 XML 解析器获取所需的属性并根据需要设置值,而不是针对 XML 结构使用正则表达式。
-
我是XML新手,不知道怎么做,因为我必须在条件下更改它
-
查看here 示例。
标签: python python-3.x xml lxml elementtree