我想解析 xml 响应并将特定数据保存到列表中。
XML
<ack>Success</ack>
<version>1.13.0</version>
<data>
<name>AAAA</name>
<age>00</age>
<data>
<name>BBBB</name>
<age>11</age>
<data>
<name>CCCC</name>
<age>22</age>
.
.
.
.
<data>
<name>ZZZZ</name>
<age>999</age>
我正在使用 ElementTree 来解析 xml。
我的脚本
import requests, xml.etree.ElementTree as ET
e = requests.get('http://sample.com/xml')
#parse the response and get root
eroot = ET.fromstring(e.text)
#iterate over root and extract data
names = [ p.find('name').text for p in eroot.iter('data') ]
print(names)
我可以使用上面的脚本提取所有名称元素,但 xml 响应包含很多名称元素。我只需要前三个名字。
我使用列表理解来减少代码行数。
我的问题
- 如何仅获取前三个名称而不解析 xml 中的所有名称。
- 我可以使用任何循环将 p.find 限制为 3 次迭代吗?
- 还有其他选择吗?
最佳答案
您可以使用itertools.islice()
:
from itertools import islice
names = [ p.find('name').text for p in islice(eroot.iter('data'), 0, 3)]
关于Python xml ElementTree : find values of only first 3 elements with same name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948812/