繁体   English   中英

在Python中获取XML属性?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM