如何从python中的xml标签中检索日期?

问题描述

我正在解析一个我对特定日期感兴趣的大型 XML 文件。此时,我可以将搜索范围缩小到一个小列表,如下所示:

date_list = [<day>15</day>,<month>10</month>,<year>2020</year>]

我需要的是一个格式如下的日期:

15-10-2020

我该怎么做?谢谢!

考虑按原样使用 XML 标记。我用了漂亮的汤。

解决方法

date_list = ['<day>15</day>','<month>10</month>','<year>2020</year>']

new_date = []

for elem in date_list:
    new_date.append(elem.split(">")[1].split("<")[0])

new_date = "-".join(new_date)

print (new_date)

输出:

15-10-2020
,

如果标签的顺序不一致,您可以使用 ElementTree 来解析标签和文本内容

from xml.etree import ElementTree as ET
date_list = ['<day>15</day>','<year>2020</year>']
# create an empty dict
a_date_dict = {}
for date_tag in date_list:
    # parse the string to an ElementTree
    el = ET.fromstring(date_tag)
    # extract data
    a_date_dict[el.tag] = int(el.text)
# at this stage you can output the string
print('{day}-{month}-{year}'.format(**a_date_dict))
# or create a date object
from datetime import date
a_date = date(**a_date_dict)

# Or if you like oneliners and use python 3.8
a_date = date(**{(b:=ET.fromstring(a)).tag:int(b.text) for a in date_list})

如果 date_list 中的项目是来自 Beautiful Soup 库的 Tag 对象,那么您应该能够使用 contents 属性

print('{}-{}-{}'.format(*[a.contents[0] for a in date_list]))