关键词:
【中文标题】如何使用 python 从 XML 创建嵌套字典?【英文标题】:How to create nested dictionary from XML using python? 【发布时间】:2019-11-29 05:50:10 【问题描述】:我正在读取一个 XML 文件并将它的一部分写入 YAML 文件。 例如,在这个 xml 文件中,
<project>
<scm class="hudson.scm.NullSCM"/>
<assignedNode>bo1php</assignedNode>
<canRoam>false</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers>
<hudson.triggers.TimerTrigger>
<spec>H * * * *</spec>
</hudson.triggers.TimerTrigger>
</triggers>
<concurrentBuild>false</concurrentBuild>
<builders>
我只想读取 disabled 值和 spec 值并将其写入 YAML 文件,如下所示: 预期输出:
disabled: 'false'
name: Cancellation_CMT_Tickets
triggers:
hudson.triggers.TimerTrigger:
spec: H * * * *
只有当我的结果字典是这种格式时
d = "trigger":"hudson.triggers.TimerTrigger": "spec": "H * * * *"
我可以将它转储到上述格式的 yaml 文件中。我当前的代码如下所示,搜索键作为运行时参数传递
import os, xml.etree.ElementTree as ET
import yaml,sys
tree = ET.parse('test.xml')
root = tree.getroot()
d =
def xmpparse(root,searchkey):
for child in root:
if child.tag == searchkey:
d[child.tag]=child.text
elif len(child):
xmpparse(child,searchkey)
for i in sys.argv:
xmpparse(root,i)
print(yaml.dump(d, default_flow_style=False))
当前输出:
disabled: 'false'
spec: H * * * *
任何帮助将不胜感激。提前致谢!
【问题讨论】:
对 YAML 了解不多(或任何...),但如果有帮助,我可以将您的字典转换为正确的格式(使用 lxml 库)。 我想要一个嵌套字典,仅用于我需要从 XML 中获取的条目。你能帮我解决这个问题吗?在进行递归操作时,它应该开始将值放入嵌套字典中 如果下面的答案有效,请告诉我。 【参考方案1】:我相信这至少应该解决嵌套字典的问题;它基于关于如何形成嵌套字典的各种答案(可能还有其他方法):
import lxml.html as LH
class NestedDict(dict):
def __missing__(self, key):
self[key] = NestedDict()
return self[key]
data = [your xml above]
doc = LH.fromstring(data)
for i in doc:
if i.tag == 'triggers':
for child in i.getchildren():
d = NestedDict()
d[i.tag][child.tag][child[0].tag] = i.text_content().strip()
print(d)
输出:
'triggers': 'hudson.triggers.timertrigger': 'spec': 'H * * * *'
【讨论】:
我忘了提一点,我的代码应该以这样的方式工作,它可以对作为运行时参数传递的 searchKey 进行任何深度。看起来您的解决方案只适用于这个 XML 文件。不过我还没有尝试过。但是 d[i.tag][child.tag][child[0].tag] 在这里你只是用 3 个键进行输入如何使用熊猫从嵌套字典创建数据框?
】如何使用熊猫从嵌套字典创建数据框?【英文标题】:Howtocreateadataframefromanesteddictionaryusingpandas?【发布时间】:2021-11-2818:42:09【问题描述】:我有以下嵌套字典:dict1=\'a\':1,\'b\':2,\'remaining\':\'c\':3,\'d\':4我想使用pandas创建一个数... 查看详情
Python:从父子值列表创建嵌套字典
...valueischild,secondisparent(0,1),(1,3),(8,7),(3,6),(4,3),(5,3)]输出需要使用这些值创 查看详情
如何在dynamodb,嵌套字典或多个项目中构建数据?(代码片段)
我从自动化测试生成的XML聚合,我在lambda函数中使用python来解析XML并创建dynamoDB项。最后,我需要每个测试的日期运行测试持续时间,并将计算一些基本的统计数据,如mean,stdev等。目前,我使用的是非常扁平的结构:"testName":st... 查看详情
如何从嵌套字典创建多索引数据框?
】如何从嵌套字典创建多索引数据框?【英文标题】:Howtocreateamultiindexdataframefromanesteddictionary?【发布时间】:2021-11-2409:29:53【问题描述】:我有一个嵌套字典,它的第一级键是[0,1,2...],每个键对应的值是这样的:"geometry":"type":... 查看详情
如何使用pyspark从xml的每个嵌套节点创建一个表
】如何使用pyspark从xml的每个嵌套节点创建一个表【英文标题】:Howtocreateatablefromeachnestednodeofanxmlusingpyspark【发布时间】:2020-11-2411:52:26【问题描述】:我有一个嵌套的XML结构如下-<parent><root1detail="something"><IDtype="typeA"&... 查看详情
从嵌套字典结构列表(具有两个级别)创建数据框的 Pythonic 方法是啥?
】从嵌套字典结构列表(具有两个级别)创建数据框的Pythonic方法是啥?【英文标题】:WhatisthepythonicwaytocreateaDataframefromalistofNestedDictionaryStructures(withtwolevels)?从嵌套字典结构列表(具有两个级别)创建数据框的Pythonic方法是什么... 查看详情
从python中的缩进文本文件创建树/深度嵌套的字典
】从python中的缩进文本文件创建树/深度嵌套的字典【英文标题】:Creatingatree/deeplynesteddictfromanindentedtextfileinpython【发布时间】:2013-07-2508:51:08【问题描述】:基本上,我想遍历一个文件并将每一行的内容放入一个深度嵌套的字... 查看详情
如何从具有元组集和列表的现有字典创建嵌套字典
】如何从具有元组集和列表的现有字典创建嵌套字典【英文标题】:Howtocreateanesteddictionaryfromexistingdictionarywithsetandlistoftuples【发布时间】:2020-07-1923:26:54【问题描述】:我已经解析了一个midi文件,并且我已经成功地得到了一个... 查看详情
Python从嵌套字典中提取正确的数据
...eddictionary【发布时间】:2021-10-2922:37:12【问题描述】:我使用sqlite3创建了一个名为“entities_data”的数据库importsqlite3conn=sqlite3.connect(\'entities_data.sqlite\')cur=conn.cursor()cur. 查看详情
从嵌套字典创建单个字典以更新 MySQLdb
...teMySQLdb【发布时间】:2017-11-0913:10:45【问题描述】:我是python新手,在尝试将嵌套字典中的数据插入MySQLdb时遇到了问题。我有一本看起来像这样的字典,但要长得多,并且长度可以变化。d=\'Object_a\':\'parameter_1\':\ 查看详情
从嵌套字典创建 Spark DataFrame
...希望在推断嵌套字典的架构时从中创建一个sparkDataFrame。使用sqlContext.createDataFrame(ds).printSchema()为 查看详情
如何使用 Python 访问嵌套字典中的字符串数据 [关闭]
】如何使用Python访问嵌套字典中的字符串数据[关闭]【英文标题】:HowtoaccesstringdatainnesteddictionarywithPython[closed]【发布时间】:2020-11-1109:31:31【问题描述】:从RPC-Server我得到以下响应:"jsonrpc":"2.0","result":"errorMessage":"\'DUT\':1\'IMEI\'... 查看详情
从熊猫数据框创建嵌套字典
...数据框,我想从中提取信息并创建一个嵌套字典以供下游使用,但是,我还不太擅长使用pandas,我需要一些帮助!我的数据框看起来像这样:SequenceA_startA_stopB_startB_stop0sequence_1125261001seq 查看详情
如何使用键路径从嵌套的字典dart中获取值。(代码片段)
我想知道如何获得嵌套字典的值或使用dart(Flutter)中的keypath来更新嵌套字典的值。答案如果你有一个这样的字典。"example":"a":"valA","b":"valB","c":"valC",你可以创建一个类来解析这个对象。classExampleStringa;Stringb;Stringc;Example(this.a,this.b,th... 查看详情
如何使用键路径从嵌套的字典dart中获取值。(代码片段)
我想知道如何获得嵌套字典的值或使用dart(Flutter)中的keypath来更新嵌套字典的值。答案如果你有一个这样的字典。"example":"a":"valA","b":"valB","c":"valC",你可以创建一个类来解析这个对象。classExampleStringa;Stringb;Stringc;Example(this.a,this.b,th... 查看详情
从嵌套列表创建字典 [重复]
...望将2元素列表的列表转换为字典。请注意,我确实不想使用与简单转换为dict相比具有不同结果的group_by。这可能吗?不支持两种最明显的尝试方式:d=xforxin[[1,2],[3,4]]这给了我们:TypeError:unhashable 查看详情
如何从 Python Pandas Dataframe 中的 STRING 列中提取嵌套字典?
】如何从PythonPandasDataframe中的STRING列中提取嵌套字典?【英文标题】:HowtoextractanesteddictionaryfromaSTRINGcolumninPythonPandasDataframe?【发布时间】:2021-03-0107:31:15【问题描述】:有一张表,其列event的一个数据点如下所示:\'事件是一个... 查看详情
python如何建立多层字典(代码片段)
使用字典的get方法使用字典的底层方法get设置默认值为一个空字典,即可创建下层字典:a=a["testkey"]=a.get("testkey",) 优点是不需要导入其他包;缺点是拓展性太差,几乎只能用在二层字典的创建上,层数越多,代码量越大。&nbs... 查看详情