Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python lxml添加一个子元素,保留所有父树_Python_Python 3.x_Lxml - Fatal编程技术网

python lxml添加一个子元素,保留所有父树

python lxml添加一个子元素,保留所有父树,python,python-3.x,lxml,Python,Python 3.x,Lxml,我有这样的想法: <source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source> <source><en />Some text <g>that is like this.<g> Needs </g&

我有这样的想法:

<source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>
<source><en />Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>
一些类似这样的文本。需要。我想保留这个结构
我想添加一个标记,以获得以下结果:

<source><en>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></en></source>
一些类似这样的文本。需要。我想保留这个结构
但是,append、insert或subElement都不会保留父元素的结构

from lxml import etree
xml = et.fromstring('<source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>')
root = xml.getroot()
element = et.Element('en')
root.insert(0, element)
print(et.tostring(root))
从lxml导入etree
xml=et.fromstring('像这样的一些文本。需要。我想保留这个结构')
root=xml.getroot()
元素=et.element('en')
root.insert(0,元素)
打印(et.tostring(根))
但是,它会插入一个空标记。我不是在猜测如何保持家长的整体结构如下:

<source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>
<source><en />Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>
一些类似这样的文本。需要。我想保留这个结构

您可以重命名原始根元素,然后将其附加到新的根元素

from lxml import etree

old_root = etree.fromstring('<source>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></source>')

old_root.tag = "en"
new_root = etree.Element("source")
new_root.append(old_root)

print(etree.tostring(new_root))
从lxml导入etree
old_root=etree.fromstring('类似于此的一些文本。需要。我想保留此结构')
old_root.tag=“en”
new_root=etree.Element(“源”)
新的\u根。追加(旧的\u根)
打印(etree.tostring(新根))
结果:

<source><en>Some text <g>that is like this.<g> Needs </g></g>. <g> I want to keep this structure</g></en></source>
一些类似这样的文本。需要。我想保留这个结构

这是我的解决方案。希望这会有所帮助

干杯