0

我有以下标签 -

<PREAMHD>
                    <HD SOURCE="HED">Applicants:</HD>
                    <P>Fortune V Separate Account</P>
</PREAMHD>
<PREAMHD>
                    <HD SOURCE="HED">FILING DATES:</HD>
                    <P>The application was filed on September 20, 2021</P>
</PREAMHD>

我尝试了,但是为每个 preamHD 标签获取了 P 标签的所有文本-

 if pre.findall("./PREAMHD"):
        DATES=''
        for dates in pre.findall("./PREAMHD/HD"):
            checking_date = dates.text
            print(checking_date)
            if 'DATES' in checking_date:
                print('filing')
                for dates_phd in pre.findall("./PREAMHD/P"):
                    print(dates_phd.text)
                    for para1 in dates_phd.itertext():
                        DATES += para1.replace('DATES:', '').replace('\n',' ')
                DATES = ' '.join(DATES.split())
                print(DATES)
        message_body += 'Dated:' + str(DATES)

我怎样才能只获得申请日期 P 标签文本?任何帮助,将不胜感激。

4

1 回答 1

1

您可以使用XPath 表达式- 特别是[tag='text']语法。

选择具有子命名标记的所有元素,其完整文本内容(包括后代)等于给定文本。

>>> pre.findall('./PREAMHD[HD="FILING DATES:"]/P')
[<Element 'P' at 0x11c239540>]
>>> for p in pre.findall('./PREAMHD[HD="FILING DATES:"]/P'):
...     p.text
'The application was filed on September 20, 2021'
于 2022-01-26T14:42:02.880 回答