3 回答
TA贡献1852条经验 获得超7个赞
正如@AmitaiIrron 所建议的,xpath可以在这里提供帮助。
此代码在文档中搜索名为 的元素zip-code,然后返回 ping 以获取该元素的父元素。从那里,您可以获得属性,并与元素name中的文本配对zip-code
for ent in root.findall(".//zip-code/.."):
print(ent.attrib.get('name'), ent.find('zip-code').text)
studio 14407
mailbox 33896
garage 33746
gym 33746
要么
{ent.attrib.get('name') : ent.find('zip-code').text
for ent in root.findall(".//zip-code/..")}
{'studio': '14407', 'mailbox': '33896', 'garage': '33746', 'gym': '33746'}
TA贡献1804条经验 获得超7个赞
你的循环应该是这样的:
# Find all <entry> tags in the hierarchy
for item in root.findall('.//entry'):
# Try finding a <zip-code> child
zipc = item.find('./zip-code')
# If found a child, print data for it
if zipc is not None:
names = (item.attrib)
print(' {} {} '.format(
names, zipc.text
))
在搜索 XML 树时,学习正确使用xpath是个问题。
TA贡献1871条经验 获得超13个赞
如果您使用正则表达式没有问题,则以下工作正常:
import re
file = open('file.xml', 'r').read()
pattern = r'name="(.*?)".*?<zip-code>(.*?)<\/zip-code>'
matches = re.findall(pattern, file, re.S)
for m in matches:
print("{} {}".format(m[0], m[1]))
并产生结果:
studio 14407
mailbox 33896
garage 33746
aystore 33746
添加回答
举报