我正在使用Python使用API查询我的Tableau服务器。我正在提取每个工作簿的修订历史记录,并尝试查看每个编辑都是哪个用户做的。在revision元素中,用户有一个子元素。我试图理解如何从这个子元素中提取用户名,并将其与正确的修订数据相关联。你知道吗
下面是返回的xml数据的示例行:
<tsResponse>
<revisions>
<revision revisionNumber="1" publishedAt="2017-01-17 T20:43:40Z"
deleted="false" current="true" sizeInBytes="1939262">
<publisher id="53f212f3" name="1563524" />
</revision>
</revisions>
</tsresponse>
包含id和name的元素是我试图获取数据的地方。我可以把它拉到第二个字典列表中,但是我需要所有的数据都放在一个字典中,这样我就可以解析标题并输出到csv。以下是我编写的相关代码:
Pub = []
Rev = []
RevDet = []
revisions = server_response_WB2.findall('.//t:revision', namespaces=xmlns)
publishers = server_response_WB2.findall('.//t:publisher', namespaces=xmlns)
for revision in revisions:
d = {}
d['workbook id'] = workbookid[i]
d['workbook name'] = workbooknames[i]
d['revision number'] = revision.get('revisionNumber')
d['revision created at'] = revision.get('publishedAt')
d['is deleted'] = revision.get('deleted')
d['is current'] = revision.get('current')
Rev.append(d)
for publisher in publishers:
d = {}
d['user name'] = publisher.get('name')
Pub.append(d)
RevDet.append(Rev[i])
RevDet.append(Pub[i])
如您所见,最后我将两个字典列表附加到RevDet,因此数据是紧密关联的。例如,RevDet的元素0和元素1将分别包含关联的修订版和发布者数据。关于如何更好地处理这个问题有什么想法吗?我下一步该怎么做?你知道吗
revision.find('t:publisher', namespaces=xmlns)
给出包含的元素,因此只需在第一个for语句中使用revision.find('t:publisher', namespaces=xmlns).get('name')
即可提取值。你知道吗相关问题 更多 >
编程相关推荐