【问题标题】:how to get a specific tag text from a similar type of tag in XML in python?如何从python中的XML中类似类型的标签中获取特定的标签文本?
【发布时间】:2022-01-26 14:23:54
【问题描述】:

我有以下标签 -

<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 标签文本? 任何帮助将不胜感激。

【问题讨论】:

  • 有很多示例(这里和其他地方)展示了如何使用 Python 解析 XML。你能告诉我们你到目前为止尝试过的代码吗?

标签: python pandas xml elementtree eda


【解决方案1】:

您可以使用XPath Expression - 特别是[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'

【讨论】:

  • 如果我有其他东西来代替 FILING DATES,比如 TIME 和 PLACE ,我是否需要每次都提及不同的标签?
  • stackoverflow.com/users/15398259/karl-thornton ,上述解决方案出现错误 - for dates_phd in pre.findall("./PREAMB/PREAMHD[HD="DATES"]/P"): for para1 in dates_phd.itertext (): DATES += para1.replace('DATES:', '').replace('\n', ' ') DATES = ' '.join(DATES.split()) print(DATES) ---- ----------------------------------------getting : [HD="FILING 上的预期错误日期:"]
  • stackoverflow.com/users/15398259/karl-thornton ,现在更正了单引号,如果 DATES 或 FIling dates 我们可以为子字符串匹配做一些事情,在 HD 标签中搜索 DATES,获取 P 标签文本吗?
猜你喜欢
  • 2020-07-22
  • 2014-07-07
  • 2020-04-02
  • 2019-07-18
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多