我有一个XML文档,我使用lxml.etree.tostring
print etree.tostring(doc, pretty_print=True)
缩进的默认级别是2个空格,我想将其更改为4个空格。 tostring
函数中没有任何论据;有没有办法用lxml轻松完成这个?
答案 0 :(得分:5)
正如this thread中所述,没有真正的方法可以更改lxml.etree.tostring
漂亮字体的缩进。
但是,你可以:
代码:
def indent(elem, level=0):
i = "\n" + level*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
if not elem.tail or not elem.tail.strip():
elem.tail = i
for elem in elem:
indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = i
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
答案 1 :(得分:2)
从版本4.5开始,you can set indent size使用indent()
函数。
etree.indent(root, space=" ")
print(etree.tostring(root))