使用Python 3提取XML元素和属性数据

时间:2013-06-14 14:33:42

标签: python xml python-3.x lxml

我希望使用Python 3从特定元素中提取特定属性的值。

有问题元素的一个例子(Atom3d):

<Atom3d ID="18" Mapping="43" Parent="2" Name="C7" 
XYZ="0.0148299997672439,0.283699989318848,1.0291999578476" Connections="33,39" 
TemperatureType="Isotropic" IsotropicTemperature="0.0677" 
AnisotropicTemperature="0,0,0,0,0,0,0,0,0" Occupancy="0.708" Components="C"/>

我需要提取XYZ值,并且还需要获取此值并将逗号分隔的数字分开。我需要在另一个不同格式的输入文件中使用这些数字,所以我想将它们分配给三个单独的变量并从那里取出。

我对Python非常缺乏经验,而且在XML方面也是如此。我不确定我需要使用哪些库,如果这些库存在,以及如果它们如何使用它们。

1 个答案:

答案 0 :(得分:1)

http://docs.python.org/3/library/xml.etree.elementtree.html

>>> from xml.etree import ElementTree as ET
>>> elem = ET.fromstring('''<Atom3d ID="18" Mapping="43" Parent="2" Name="C7"
... XYZ="0.0148299997672439,0.283699989318848,1.0291999578476" Connections="33,39"
... TemperatureType="Isotropic" IsotropicTemperature="0.0677"
... AnisotropicTemperature="0,0,0,0,0,0,0,0,0" Occupancy="0.708" Components="C"/>
... ''')

使用get('attribute-name')获取属性:

>>> elem.get('XYZ')
'0.0148299997672439,0.283699989318848,1.0291999578476'

将字符串拆分为',':

>>> elem.get('XYZ').split(',')
['0.0148299997672439', '0.283699989318848', '1.0291999578476']