python从字典值求和帧
我有一个包含某种播放列表的xml文件 当我解析它时,我想求和帧 XML如下所示:python从字典值求和帧,python,dictionary,time,sum,append,Python,Dictionary,Time,Sum,Append,我有一个包含某种播放列表的xml文件 当我解析它时,我想求和帧 XML如下所示: <PLAYLIST> <type>COMMERCIAL</type> <frames>94</frames> <starttime>02-02-2021 01:30:55:914</starttime> </PLAYLIST> <PLAYLIST> <ty
<PLAYLIST>
<type>COMMERCIAL</type>
<frames>94</frames>
<starttime>02-02-2021 01:30:55:914</starttime>
</PLAYLIST>
<PLAYLIST>
<type>COMMERCIAL</type>
<frames>96</frames>
<starttime>02-02-2021 01:35:55:914</starttime>
</PLAYLIST>
<PLAYLIST>
<type>COMMERCIAL</type>
<frames>120</frames>
<starttime>02-02-2021 02:30:55:914</starttime>
</PLAYLIST>
<PLAYLIST>
<type>COMMERCIAL</type>
<frames>180</frames>
<starttime>02-02-2021 02:40:55:914</starttime>
</PLAYLIST>
这里有一个想法:还包括一个谷歌合作链接: 其思想是使用默认字典,它允许您根据某个键灵活地分组,并在出现键时增加其值
从日期时间导入日期时间
从bs4导入BeautifulSoup
从集合导入defaultdict
data=“””02-02-2021 01:30:52:15494
02-02-2021 01:50:52:12496
02-02-2021 02:50:52:124120
02-02-2021 02:50:52:124180"""
小时总和=默认值(整数)
行=数据。拆分('\n')
对于行中的行:
soup=BeautifulSoup(行“html.parser”)
时间=汤。查找('starttime')。获取文本()
hour_piece=time.split(“”)[1]。split(‘:’)[0]
frames=int(soup.find('frames')。get_text())
小时总和[小时片]+=帧
那么输出是:
defaultdict(int,{'01':190,'02':300})
您必须提供更多信息,并使其可复制以获得一个好的答案(没有人可以将其复制到自己的编辑器中并运行它)。您在dom.findall()
中使用的库是什么?很好,我是python新手,不知道defaultdict,我学到了一些新东西。非常好-很高兴能提供帮助-查看集合模块,有很多方便的实用程序。
import os
import xml.etree.ElementTree as ET
from timecode import Timecode
file = '/home/Myxml.xml'
dom = ET.parse(file)
lista = dom.findall('PLAYLIST')
listXML = []
for l in lista:
type_md = l.find('type') # COMMERCIAL
start_time = l.find('starttime') # početak emitiranja
frames = l.find('frames') # TC Duration
if type_md.text == 'COMMERCIAL':
listXML.append(start_time.text[11:-10])
listXML.append(frames.text)
listXML = list(zip(listXML[::2], listXML[1::2]))
clock_dict = {}
for x in listXML:
x_dict = list(zip(x[::2], x[1::2]))
clock_dict.update(x_dict)
print(clock_dict)
# print(clock_dict)