[英]Fetching XML attributes in Python?
例如,我有以下XML文件:在每个短语中,我总是有2个<en>
标记, x
属性是PERS,LOC或ORG。
我想做的就是获取所有仅包含ORG和PERS的<en>
对
XML示例:
<PHRASE>
<N y='0'> back</N>
<en x='PERS'>John</en>
<PREP>to</PREP>
<en x='LOC'>New York</en>
</PHRASE>
我正在尝试使用元素树,但是尝试了它,但是无论第二个“ en”标签是什么,它都会检索任何PERS或ORG。 我只想要PERS和ORG对(即:当它们以相同的短语出现时)
for en in root.findall('./PHRASE/en'):
NE = en.get('x')
if(NE) == "ORG":
print("ORG is: ",en.text)
NE2=en.get('x')
if(NE2) == "PERS":
print("PER is:", en.text)
如果要查找特殊短语,则必须遍历短语并测试它们是否满足条件:
for phrase in root.findall('./PHRASE'):
ens = {en.get('x'): en.text for en in phrase.findall('en')}
if 'ORG' in ens and 'PERS' in ens:
print("ORG is: {}, PERS is: {}".format(ens["ORG"], ens["PERS"]))
您不必遍历所有短语 。 使用的功率XPath
滤除PHRASE
元素,其中所述第一en
“SX属性是PERS
和第二en
” SX属性是LOC
:
root.xpath(".//PHRASE[en[1]/@x = 'PERS' and en[2]/@x = 'LOC']")
假设您正在使用lxml.etree
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.