Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中获取XML属性?_Python_Xml_Python 2.7_Python 3.x - Fatal编程技术网

在Python中获取XML属性?

在Python中获取XML属性?,python,xml,python-2.7,python-3.x,Python,Xml,Python 2.7,Python 3.x,例如,我有以下XML文件: 在每个短语中,我总是有2个标记,x属性是PERS、LOC或ORG。 我想做的是获取所有的对,其中它们只是组织和人员 XML示例: <PHRASE> <N y='0'> back</N> <en x='PERS'>John</en> <PREP>to</PREP> <en x='LOC'>New York</en> </PHRASE> 如果要查找特殊

例如,我有以下XML文件: 在每个短语中,我总是有2个
标记,
x
属性是PERS、LOC或ORG。
我想做的是获取所有的
对,其中它们只是组织和人员

XML示例:

<PHRASE>
<N y='0'> back</N>
<en x='PERS'>John</en>
<PREP>to</PREP>
<en x='LOC'>New York</en>
</PHRASE>

如果要查找特殊短语,必须迭代短语并测试它们以满足以下条件:

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"]))
你不必重复所有的短语。在第一个
en
的x属性为
PERS
且第二个
en
的x属性为
LOC
的情况下,使用的幂函数过滤掉
短语
元素:

root.xpath(".//PHRASE[en[1]/@x = 'PERS' and en[2]/@x = 'LOC']")
假设您正在使用

root.xpath(".//PHRASE[en[1]/@x = 'PERS' and en[2]/@x = 'LOC']")