python 打开excel并在屏幕上呈现_Python读取Excel文件并生成分析结果

python 打开excel并在屏幕上呈现_Python读取Excel文件并生成分析结果笔者需要对存放在 Excel 里的很多媒资文件进行分析 这些节目的分辨率有高清 标清之分 高清的节目名称前面加上 HD 比如下面的 HD 护宝联盟第一季 标清的则直接是节目名称 如 HD 护宝联盟第一季 这些节目可能分别属于电视剧 电影 娱乐的栏目 每个节目有对应的时长

大家好,我是讯享网,很高兴认识大家。

笔者需要对存放在Excel里的很多媒资文件进行分析,这些节目的分辨率有高清、标清之分,高清的节目名称前面加上“HD-”,比如下面的“HD-护宝联盟第一季”,标清的则直接是节目名称,如“HD-护宝联盟第一季”,这些节目可能分别属于电视剧、电影、娱乐的栏目,每个节目有对应的时长(分钟数),然后按栏目放在不同的sheet里

1391507-20181208155328563-643640982.png
讯享网

1391507-20181208160617138-658429622.png

需要实现的目标有:

1、统计高清节目的时长,这个在Excel里可以直接统计;

2、统计标清节目的时长,这个在Excel里可以直接统计;

3、统计高清、标清节目的重复率,这里要分析高清节目和标清节目差一个“HD-”的数量及时长,就无法在Excel里简单实现了,干脆写一个Python操作Excel文件的博文供大家参考,也可给自己留个笔记。

以下是代码部分,我在Win7+Pycharm+python3.6里调试通过:

__author__ = 'Yue Qingxuan'

# -*- coding: utf-8 -*-

import sys

import xlrd

import datetime

def trans():

try:

workbook1 = xlrd.open_workbook(r'E:\temp\节目数据.xlsx') #打开Excel文件

#print(workbook1.sheet_by_index(0).nrows)

#print(workbook1.sheet_by_index(0).ncols)

for sheet in range(len(workbook1.sheets())): #循环打开每个sheet

sdname=[] #定义一个数组,存放标清节目的名称

sdtime=[] #定义一个数组,存放标清节目的时长

hdname=[] #定义一个数组,存放高清节目的名称

hdtime=[] #定义一个数组,存放高清节目的时长

for row in range(workbook1.sheet_by_index(sheet).nrows):

# print(workbook1.sheet_by_index(sheet).cell(row,3).value.strip())

if (workbook1.sheet_by_index(sheet).cell(row,3).value.strip()=='标清'):

sdname.append(workbook1.sheet_by_index(sheet).cell(row,0).value) #将标清节目的名称存入数组

sdtime.append(int(workbook1.sheet_by_index(sheet).cell(row,2).value)) #将标清节目的时长存入数组

elif (workbook1.sheet_by_index(sheet).cell(row,3).value.strip()=='高清'):

hdname.append(workbook1.sheet_by_index(sheet).cell(row,0).value) #将高清节目的名称存入数组

hdtime.append(int(workbook1.sheet_by_index(sheet).cell(row,2).value)) #将高清节目的时长存入数组

repeated_time=0 #定义标清、高清节目的重复时长的计数器,并初始化为0

sdtimes=0 #定义标清节目的时长

hdtimes=0 #定义高清节目的时长

tmpcount=0 #定义标清、高清节目的重复次数的计数器,并初始化为0

for ii in range(len(sdname)):

for kk in range(len(hdname)):

if sdname[ii] == hdname[kk].lstrip('HD-'): #判断标清节目和高清节目的名称差一个"HD-"后,是否相等

repeated_time += hdtime[kk]

tmpcount+=1

# print('第{0}个:'.format(tmpcount),'标清名称:',sdname[ii],' 高清名称:',hdname[kk],' 标清时长:',sdtime[ii],'高清时长',hdtime[kk])

for iii in range(len(sdname)):

sdtimes += sdtime[iii] #存放标清节目的总时长

for jj in range(len(hdtime)):

hdtimes+=hdtime[jj] #存放高清节目的总时长

print("\n---------------",workbook1.sheet_by_index(sheet).name,'---------------------')

print('重复分钟数:',repeated_time," 重复小时数:",repeated_time/60,' 取整保留小数点一位:',round(repeated_time/60,1))

print('高清分钟数:',hdtimes," 高清小时数:",hdtimes/60,' 取整保留小数点一位',round(hdtimes/60,1))

print('标清分钟数:', sdtimes,' 标清小时数:',sdtimes/60,' 取整保留小数点一位:',round(sdtimes/60,1))

except:

print(sys.exc_info())

if __name__ == '__main__':

print("程序开始时间:", datetime.datetime.now())

trans()

print("程序结束时间:", datetime.datetime.now())

如下是程序运行的结果:

程序开始时间: 2018-12-08 16:04:13.083143

--------------- 电视剧 ---------------------

重复分钟数: 6776 重复小时数: 112.334 取整保留小数点一位: 112.9

高清分钟数: 6777 高清小时数: 112.95 取整保留小数点一位 113.0

标清分钟数: 9070 标清小时数: 151.666 取整保留小数点一位: 151.2

--------------- 电影 ---------------------

重复分钟数: 2371 重复小时数: 39.6666 取整保留小数点一位: 39.5

高清分钟数: 2986 高清小时数: 49.6666 取整保留小数点一位 49.8

标清分钟数: 2743 标清小时数: 45.667 取整保留小数点一位: 45.7

--------------- 娱乐 ---------------------

重复分钟数: 6630 重复小时数: 110.5 取整保留小数点一位: 110.5

高清分钟数: 6849 高清小时数: 114.15 取整保留小数点一位 114.2

标清分钟数: 7033 标清小时数: 117.667 取整保留小数点一位: 117.2

程序结束时间: 2018-12-08 16:04:13.

小讯
上一篇 2025-02-23 12:09
下一篇 2025-03-15 14:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/68852.html