您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python:存储在列表中的连接和写入(XML.etrees)树

5b51 2022/1/14 8:20:38 python 字数 3774 阅读 462 来源 www.jb51.cc/python

我正在循环一些XML文件并生成我想要以defaultdict(list)类型存储的树.每个循环和下一个找到的子项将存储在字典的单独部分中.d = defaultdict(list) counter = 0 for child in root.findall(something): tree = ET.ElementTree(something)

概述

我正在循环一些XML文件生成我想要以defaultdict(list)类型存储的树.每个循环和下一个找到的子项将存储在字典的单独部分中.

d = defaultdict(list)
counter = 0
for child in root.findall(something):
    tree = ET.ElementTree(something)
    d[int(x)].append(tree)
    counter += 1

因此,对多个文件重复此操作将导致精确索引的结果;跨越不同解析文件的位置1的一组树,依此类推.问题是,我如何加入所有d,并将树(作为累积树)写入文件

我可以遍历dict来获取每棵树:

for x in d:
    for y in d[x]:
        print (y)

这给出了我的词典中的完整树木列表.现在,我如何从中生产出一棵大树?

Sample input file 1

Sample input file 2

Required results from 1&2

鉴于这样做有明显的困难,我很高兴接受更一般的答案,这些答案显示我如何从两个或更多文件获取我正在寻找的结果.

from spyne.model.primitive import *
from spyne.model.complex import *

class GpsInfo(ComplexModel):
    UTC = DateTime
    Latitude = Double
    Longitude = Double
    DopplerTime = Double
    Quality = Unicode
    HDOP = Unicode
    Altitude = Double
    Speed = Double
    heading = Double
    Estimated = Boolean

class Header(ComplexModel):
    Name = Unicode
    Time = DateTime
    SeqNo = Integer

class CTrailData(ComplexModel):
    index = UnsignedInteger
    gpsInfo = GpsInfo
    Header = Header

class CTrail(ComplexModel):
    LastError = AnyXml
    MaxTrial = Integer
    Trail = Array(CTrailData)

from lxml import etree
from spyne.util.xml import *

file_1 = get_xml_as_object(etree.fromstring(open('file1').read()),CTrail)
file_2 = get_xml_as_object(etree.fromstring(open('file2').read()),CTrail)
file_1.Trail.extend(file_2.Trail)
file_1.Trail.sort(key=lambda x: x.index)

elt = get_object_as_xml(file_1,no_namespace=True)
print etree.tostring(elt,pretty_print=True)

在执行此操作时,Spyne还将数据字段从字符串转换为其本机Python格式,因此您可以更轻松地处理此xml文档中的数据.

另外,如果您不介意使用git的最新版本,您可以这样做:

class GpsInfo(ComplexModel):
    # (...)
    doppler_time = Double(sub_name="DopplerTime")
    # (...)

这样您就可以从CamelCased标签获取数据,而不必违反PEP8.

总结

以上是编程之家为你收集整理的Python:存储在列表中的连接和写入(XML.etrees)树全部内容,希望文章能够帮你解决Python:存储在列表中的连接和写入(XML.etrees)树所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶