XML/lxml 可能使用 [0] 之类的东西解析第一次出现?
XML/lxml Parsing first occurrence using something like [0] maybe?
下面的代码 returns 所有“str1”,但我只想要其中每个“str1”的第一个“str1”:CrntRgstns->BrnchOfLocs->BrnchOfLoc。就像“13A MAIN ST”一样,而不是“8 WATER ST”。 是否有某种类型的 [0] 可以完成此操作? 谢谢。
当前代码:
from lxml import etree
f = open(r'C:\Users\Andrew/Desktop/xml_file.xml')
tree = etree.parse(f)
for e in tree.xpath('.//CrntRgstns/following-sibling::BrnchOfLocs/BrnchOfLoc'):
print(e.attrib['str1'])
当前输出:
13A MAIN ST
8 WATER ST
期望输出:
13A MAIN ST
xml 1 个人:
<?xml version="1.0" encoding="ISO-8859-1"?>
<IAPDIndividualReport GenOn="2021-01-03">
<Indvls>
<Indvl>
<Info lastNm="Modafferi" firstNm="Paul" midNm="Anthony" indvlPK="2762691" actvAGReg="Y" link="https://adviserinfo.sec.gov/individual/summary/2762691"/>
<OthrNms>
<OthrNm lastNm="BIAMONTE" firstNm="PAUL" midNm="F"/>
<OthrNm lastNm="Modafferi" firstNm="Paul" midNm="A"/>
<OthrNm lastNm="Modafferi" firstNm="Paul" midNm="Anthony"/>
</OthrNms>
<CrntEmps>
<CrntEmp orgNm="MERRILL LYNCH, PIERCE, FENNER & SMITH INCORPORATED" orgPK="7691" str1="ONE BRYANT PARK" city="NEW YORK" state="NY" cntry="United States" postlCd="10036">
<CrntRgstns>
<CrntRgstn regAuth="NJ" regCat="RA" st="APPROVED" stDt="2019-11-25"/>
</CrntRgstns>
<BrnchOfLocs>
<BrnchOfLoc str1="13A MAIN ST" city="SPARTA" state="NJ" cntry="United States" postlCd="07871"/>
<BrnchOfLoc str1="8 WATER ST" city="EAGLE" state="CA" cntry="United States" postlCd="90232"/>
</BrnchOfLocs>
</CrntEmp>
</CrntEmps>
要获取第一项,请使用 [1]
(您与 0 的距离如此之近!)。
例如:tree.xpath('.//CrntRgstns/following-sibling::BrnchOfLocs/BrnchOfLoc[1]')
尝试:
from lxml import etree
f = open(r'C:\Users\Andrew/Desktop/xml_file.xml')
tree = etree.parse(f)
for e in tree.xpath('.//CrntRgstns/following-sibling::BrnchOfLocs/BrnchOfLoc[1]'):
print(e.attrib['str1'])
输出:
13A MAIN ST
下面的代码 returns 所有“str1”,但我只想要其中每个“str1”的第一个“str1”:CrntRgstns->BrnchOfLocs->BrnchOfLoc。就像“13A MAIN ST”一样,而不是“8 WATER ST”。 是否有某种类型的 [0] 可以完成此操作? 谢谢。
当前代码:
from lxml import etree
f = open(r'C:\Users\Andrew/Desktop/xml_file.xml')
tree = etree.parse(f)
for e in tree.xpath('.//CrntRgstns/following-sibling::BrnchOfLocs/BrnchOfLoc'):
print(e.attrib['str1'])
当前输出:
13A MAIN ST
8 WATER ST
期望输出:
13A MAIN ST
xml 1 个人:
<?xml version="1.0" encoding="ISO-8859-1"?>
<IAPDIndividualReport GenOn="2021-01-03">
<Indvls>
<Indvl>
<Info lastNm="Modafferi" firstNm="Paul" midNm="Anthony" indvlPK="2762691" actvAGReg="Y" link="https://adviserinfo.sec.gov/individual/summary/2762691"/>
<OthrNms>
<OthrNm lastNm="BIAMONTE" firstNm="PAUL" midNm="F"/>
<OthrNm lastNm="Modafferi" firstNm="Paul" midNm="A"/>
<OthrNm lastNm="Modafferi" firstNm="Paul" midNm="Anthony"/>
</OthrNms>
<CrntEmps>
<CrntEmp orgNm="MERRILL LYNCH, PIERCE, FENNER & SMITH INCORPORATED" orgPK="7691" str1="ONE BRYANT PARK" city="NEW YORK" state="NY" cntry="United States" postlCd="10036">
<CrntRgstns>
<CrntRgstn regAuth="NJ" regCat="RA" st="APPROVED" stDt="2019-11-25"/>
</CrntRgstns>
<BrnchOfLocs>
<BrnchOfLoc str1="13A MAIN ST" city="SPARTA" state="NJ" cntry="United States" postlCd="07871"/>
<BrnchOfLoc str1="8 WATER ST" city="EAGLE" state="CA" cntry="United States" postlCd="90232"/>
</BrnchOfLocs>
</CrntEmp>
</CrntEmps>
要获取第一项,请使用 [1]
(您与 0 的距离如此之近!)。
例如:tree.xpath('.//CrntRgstns/following-sibling::BrnchOfLocs/BrnchOfLoc[1]')
尝试:
from lxml import etree
f = open(r'C:\Users\Andrew/Desktop/xml_file.xml')
tree = etree.parse(f)
for e in tree.xpath('.//CrntRgstns/following-sibling::BrnchOfLocs/BrnchOfLoc[1]'):
print(e.attrib['str1'])
输出:
13A MAIN ST