python一些方便excel行操作的函数(一)

import collections
class headhandler():def __init__(self,mylist):self.mystorage={}self.mylist = mylistdef delempty(self):'''去除重复:return:'''while "" in self.mylist:self.mylist.remove("")def formatmydata(self,i):try:i=i.replace("","")except Exception:i=ireturn idef fillempty(self):'''只用于处理表头信息:return:'''# 对于不规则列表的处理办法,如果元素的下一个元素仍是字符串类型,或者不存在# 就插入或者用0填充
        self.delempty()for i in self.mylist:myindex = self.mylist.index(i)if myindex == 0 or (myindex % 2 == 0):try:nextelement = self.mylist[myindex + 1]if isinstance(self.mylist[myindex + 1], str):self.mylist.insert(myindex + 1, 0)except IndexError:self.mylist.append(0)self.mylist =list(map(self.formatmydata,self.mylist))print(self.mylist)def turntodict(self):self.fillempty()for i in self.mylist[::2]:self.mystorage[i] =self.mylist[self.mylist.index(i)+1]return self.mystoragedef finalchart(self):self.delempty()self.mylist = list(map(self.formatmydata,self.mylist))#print(self.mylist)finalchart = self.turntodict()#print(finalchart)return finalchartclass rowhandler(headhandler):def __init__(self,mylist):super(rowhandler,self).__init__(mylist)def fillempty(self):self.delempty()staticdict={}for myindex,myelement in enumerate(self.mylist):if myelement in staticdict:staticdict[myelement].append(myindex)else:staticdict[myelement]=[]staticdict[myelement].append(myindex)for i in list(staticdict.keys()):if len(staticdict[i])==1:del staticdict[i]else:self.mylist[staticdict[i][0]] =self.mylist[staticdict[i][0]]+'重量'self.mylist[staticdict[i][1]] = self.mylist[staticdict[i][1]] + '含量'self.mylist[staticdict[i][2]] = self.mylist[staticdict[i][2]] + '价格'return self.mylistdef turntodict(self):self.fillempty()for i in self.mylist[::2]:self.mystorage[i] =self.mylist[self.mylist.index(i)+1]return self.mystorage
#mylist =  ['采购日期:', '', 43495.0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '索赔金额:', '', '', '', '', '', 0.0, '', '']
mydict= {'a':[1,2],'b':[2,3,4]}
for i in list(mydict.keys()):print(mydict[i])if len(mydict[i])>2:del mydict[i]
print(mydict)
#print(wenwa.index('每吨人工:'))

输出结果:

[1, 2]
[2, 3, 4]
{'a': [1, 2]}
from anewclass import *
class docgen:def __init__(self,mylist):self.mxrows = mylist[1::]self.columnline = mylist[0]self.addlist=[]#用于承载非规则行信息self.mxlist = []def addstring(self):mycounter = dict(collections.Counter(self.columnline))keypos = []finalist = []for i in mycounter.keys():if mycounter[i] > 1:for myindex, myelements in enumerate(self.columnline):if myelements == i:keypos.append(myindex)if myindex == len(self.columnline) - 1:finalist.append(keypos)keypos = []for i in finalist:self.columnline[i[0]] = self.columnline[i[0]] + "重量"self.columnline[i[1]] = self.columnline[i[1]] + "含量"self.columnline[i[2]] = self.columnline[i[2]] + "价格"return self.columnlinedef genmx(self):self.addstring()for i in self.mxrows:if i[0]=="":myhandler = rowhandler(i)self.addlist.append(myhandler.turntodict())else:myrow = rowhandler(self.columnline)self.columnline = myrow.fillempty()self.mxlist.append(dict(zip(self.columnline,i)))def returnall(self):self.genmx()return {'mx':self.mxlist,'others':self.addlist}wuwa =[
['品名', '采购价', '每吨成本', '重量', '货品总成本', '铜重量', '铝重量', '片重量', '无限长', '锄头马', '铁重量', '铜含量', '铝含量', '片含量', '无限长',
'锄头马', '铁含量', '铜价格', '铝价格', '片价格', '无限长', '锄头马', '铁价格', '产值', '每吨毛利', '货品赢利'], ['铜芯', 0.72, 11956.0, 19.617, 234540.852, 4.665, 0.068, 4.706, 0.506, 1.386, 1.63, 0.23780394555742468, 0.0034663811999796094,
0.23989396951623593, 0.025793954223377682, 0.07065300504664321, 0.08309119641127592, 39200.0, 7000.0, 5050.0, 4500.0, 2750.0, 1800.0,
11791.65009940358, -164.3499005964204, -3224.051999999979], ['', '', '', '', '', '', '23尖角', 1.157, '35尖角', 1.766, '', '', '23尖角', 0.058979456593770706, '35尖角', 0.09002395881123515, '', '',

'23尖角', 5000.0, '35尖角', 3500.0, '', '', '', ''], ['', '', '', '', '', '', '35平角', 1.073, '', '', '', '', '35平角', 0.05469745628791354, '', '', '', '', '35平角', 3000.0, '', '', '', '',
'', ''] ]saiwa = docgen(wuwa) print("===============mx===================") for i in saiwa.returnall()['mx']:print(i) print("===============others===================")for i in saiwa.returnall()['others']:print(i)

输出结果:

[1, 2]
[2, 3, 4]
{'a': [1, 2]}
===============mx===================
{'品名': '铜芯', '采购价': 0.72, '每吨成本': 11956.0, '重量': 19.617, '货品总成本': 234540.852, '铜重量': 4.665, '铝重量': 0.068, '片重量': 4.706,
'无限长重量': 0.506, '锄头马重量': 1.386, '铁重量': 1.63, '铜含量': 0.23780394555742468, '铝含量': 0.0034663811999796094, '片含量':
0.23989396951623593, '无限长含量': 0.025793954223377682, '锄头马含量': 0.07065300504664321, '铁含量': 0.08309119641127592, '铜价格': 39200.0,
'铝价格': 7000.0, '片价格': 5050.0, '无限长价格': 4500.0, '锄头马价格': 2750.0, '铁价格': 1800.0, '产值': 11791.65009940358, '每吨毛利':
-164.3499005964204, '货品赢利': -3224.051999999979} ===============others=================== {'23尖角重量': 1.157, '35尖角重量': 1.766, '23尖角含量': 0.058979456593770706, '35尖角含量': 0.09002395881123515, '23尖角价格': 5000.0,

'35尖角价格': 3500.0} {'35平角重量': 1.073, '35平角含量': 0.05469745628791354, '35平角价格': 3000.0}

 

def readexcel(path):datablock = pd.read_excel(path,sheet_name=0)print(len(datablock))wenwa = datablock.head(2)print(type(wenwa.index))print(datablock.index.__dict__)print("columns",datablock.columns[0])print("columns",datablock.head(2).columns)def loadexcel(path):mysheet = xlrd.open_workbook(path)mybook = mysheet.sheet_by_index(0)#print(mybook.row_values(0))colnamelist = mybook.row_values(2)row3 = mybook.row_values(3)#print(dict(zip(colnamelist,row3)))allrets = []for i in range(mybook.nrows):#print(mybook.row_values(i))
         allrets.append(mybook.row_values(i))print(mybook.nrows)for i in allrets:#print(i)passreturn allretsdef mergerows(mylist):splitline = 0doc = {}for i in mylist:print(i)k='每吨人工:'if k in i:print('in: ',mylist.index(i))splitline = mylist.index(i)doc["mx"] = mylist[2:splitline-1]doc["header"] = mylist[splitline:]return doc
duwa = loadexcel('火烧片 2. MSCU3272441 铜芯.csv')
doc = mergerows(duwa)
for i in doc['header']:print(i)print("==================mx=============================")
for i in doc['mx']:print(i)def dealmx(mylist):if mylist[0]=='':passmylist1=['品名', '采购价', '每吨成本', '重量', '货品总成本', '铜重量', '铝重量', '片重量', '无限长', '锄头马', '铁重量', '铜含量', '铝含量', '片含量', 

'无限长', '锄头马', '铁含量', '铜价格', '铝价格', '片价格', '无限长', '锄头马', '铁价格', '产值', '每吨毛利', '货品赢利'] mylist2=['铜芯', 0.72, 11956.0, 19.617, 234540.852, 4.665, 0.068, 4.706, 0.506, 1.386, 1.63, 0.23780394555742468, 0.0034663811999796094,
0.23989396951623593, 0.025793954223377682, 0.07065300504664321, 0.08309119641127592, 39200.0, 7000.0, 5050.0, 4500.0, 2750.0, 1800.0,
11791.65009940358, -164.3499005964204, -3224.051999999979]print(dict(zip(mylist1,mylist2))) print(collections.Counter(mylist1)) print(mylist1.index('无限长'))def addstring(mylist):mycounter = collections.Counter(mylist)keypos=[]finalist=[]for i in mycounter.keys():if mycounter[i]>1:for myindex,myelements in enumerate(mylist):if myelements==i:keypos.append(myindex)if myindex==len(mylist)-1:finalist.append(keypos)keypos = []for i in finalist:mylist[i[0]]=mylist[i[0]]+"重量"mylist[i[1]]=mylist[i[1]]+"含量"mylist[i[2]] = mylist[i[2]] + "价格"return mylist print(addstring(mylist1))mycounter = collections.Counter(mylist1) print(dict(mycounter))

输出结果:

12
['火烧片', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
['品名', '采购价', '每吨成本', '重量', '货品总成本', '铜重量', '铝重量', '片重量', '无限长', '锄头马', '铁重量', '铜含量', '铝含量', '片含量', '无限长',
'锄头马', '铁含量', '铜价格', '铝价格', '片价格', '无限长', '锄头马', '铁价格', '产值', '每吨毛利', '货品赢利'] ['铜芯', 0.72, 11956.0, 19.617, 234540.852, 4.665, 0.068, 4.706, 0.506, 1.386, 1.63, 0.23780394555742468, 0.0034663811999796094,
0.23989396951623593, 0.025793954223377682, 0.07065300504664321, 0.08309119641127592, 39200.0, 7000.0, 5050.0, 4500.0, 2750.0, 1800.0,
11791.65009940358, -164.3499005964204, -3224.051999999979] ['', '', '', '', '', '', '23尖角', 1.157, '35尖角', 1.766, '', '', '23尖角', 0.058979456593770706, '35尖角', 0.09002395881123515, '', '',
'23尖角', 5000.0, '35尖角', 3500.0, '', '', '', ''] ['', '', '', '', '', '', '35平角', 1.073, '', '', '', '', '35平角', 0.05469745628791354, '', '', '', '', '35平角', 3000.0, '', '', '', '', '',
''] ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '每吨人工:', '', '', '', '', '总人工', 0.0, '', ''] in: 7 ['采购日期:', '', 43495.0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '索赔金额:', '', '', '', '', '', 0.0, '', ''] ['计算日期:', '', 43594.0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '总成本:', '', '', '', '', '', 234540.852, '', ''] ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '总利润:', '', '', '', '', '', -3224.051999999979, '', ''] ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '利润百分比:', '', '', '', '', '', -0.013746227885281063, '', ''] ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '每吨人工:', '', '', '', '', '总人工', 0.0, '', ''] ['采购日期:', '', 43495.0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '索赔金额:', '', '', '', '', '', 0.0, '', ''] ['计算日期:', '', 43594.0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '总成本:', '', '', '', '', '', 234540.852, '', ''] ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '总利润:', '', '', '', '', '', -3224.051999999979, '', ''] ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '利润百分比:', '', '', '', '', '', -0.013746227885281063, '', ''] ==================mx============================= ['品名', '采购价', '每吨成本', '重量', '货品总成本', '铜重量', '铝重量', '片重量', '无限长', '锄头马', '铁重量', '铜含量', '铝含量', '片含量', '无限长',

'锄头马', '铁含量', '铜价格', '铝价格', '片价格', '无限长', '锄头马', '铁价格', '产值', '每吨毛利', '货品赢利'] ['铜芯', 0.72, 11956.0, 19.617, 234540.852, 4.665, 0.068, 4.706, 0.506, 1.386, 1.63, 0.23780394555742468, 0.0034663811999796094,
0.23989396951623593, 0.025793954223377682, 0.07065300504664321, 0.08309119641127592, 39200.0, 7000.0, 5050.0, 4500.0, 2750.0, 1800.0,
11791.65009940358, -164.3499005964204, -3224.051999999979]
[
'', '', '', '', '', '', '23尖角', 1.157, '35尖角', 1.766, '', '', '23尖角', 0.058979456593770706, '35尖角', 0.09002395881123515, '', '',
'23尖角', 5000.0, '35尖角', 3500.0, '', '', '', '']
[
'', '', '', '', '', '', '35平角', 1.073, '', '', '', '', '35平角', 0.05469745628791354, '', '', '', '', '35平角', 3000.0, '', '', '', '', '',
'']
{
'品名': '铜芯', '采购价': 0.72, '每吨成本': 11956.0, '重量': 19.617, '货品总成本': 234540.852, '铜重量': 4.665, '铝重量': 0.068, '片重量': 4.706,
'无限长': 4500.0, '锄头马': 2750.0, '铁重量': 1.63, '铜含量': 0.23780394555742468, '铝含量': 0.0034663811999796094, '片含量': 0.23989396951623593,
'铁含量': 0.08309119641127592,
'铜价格': 39200.0, '铝价格': 7000.0, '片价格': 5050.0, '铁价格': 1800.0, '产值': 11791.65009940358, '每吨毛利': -164.3499005964204, '货品赢利':
-3224.051999999979}
Counter({
'无限长': 3, '锄头马': 3, '品名': 1, '采购价': 1, '每吨成本': 1, '重量': 1, '货品总成本': 1, '铜重量': 1, '铝重量': 1, '片重量': 1,
'铁重量': 1, '铜含量': 1, '铝含量': 1, '片含量': 1, '铁含量': 1, '铜价格': 1, '铝价格': 1, '片价格': 1, '铁价格': 1, '产值': 1, '每吨毛利': 1,
'货品赢利': 1})
8 ['品名', '采购价', '每吨成本', '重量', '货品总成本', '铜重量', '铝重量', '片重量', '无限长重量', '锄头马重量', '铁重量', '铜含量', '铝含量', '片含量',
'无限长含量', '锄头马含量', '铁含量', '铜价格', '铝价格', '片价格', '无限长价格', '锄头马价格', '铁价格', '产值', '每吨毛利', '货品赢利'] {'品名': 1, '采购价': 1, '每吨成本': 1, '重量': 1, '货品总成本': 1, '铜重量': 1, '铝重量': 1, '片重量': 1, '无限长重量': 1, '锄头马重量': 1,
'铁重量': 1, '铜含量': 1, '铝含量': 1, '片含量': 1, '无限长含量': 1, '锄头马含量': 1, '铁含量': 1, '铜价格': 1, '铝价格': 1, '片价格': 1,
'无限长价格': 1, '锄头马价格': 1, '铁价格': 1, '产值': 1, '每吨毛利': 1, '货品赢利': 1}

 

转载于:https://www.cnblogs.com/saintdingspage/p/11368194.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx php空白页 fastcgi_param

原文地址:http://hi.baidu.com/%CA%E6%B7%F4%BC%D1%B2%C5%CA%C7%CD%F5%B5%C0/blog/item/77e622509c15dd06377abe4e.html 今天安装完nginx 后 发现html页面能正常浏览 但是php文件的页面打开后是一篇空白 看php-fpm日志 看nginx日志都没找到问题 上网搜索了半天终于解…

[html] 如何让<p>测试 空格</p>这两个词之间的空格变大?

[html] 如何让测试 空格这两个词之间的空格变大? 这边有这么两种方法:通过给p标签设置word-spacing,将这个属性设置成自己想要的值。将这个空格用一个span标签包裹起来,然后设置span标签的letter-spacing或者word-spacing。我分别…

git 为什么不能断点_跟我一起学docker(九)--持续系统集成了解下git

什么是持续集成?持续集成(Continuous integration,简称CI)。根据敏捷大师Martin Fowler的定义,“持续集成是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可…

selenium定位元素的方法_selenium定位元素之冻结窗口

我们在使用selenium进行元素定位的时候,会发现有很多需要操作的元素是随着鼠标移动与移出才会显示与隐藏,不能通过页面窗口实时看到自己的定位是否准确。这就给我们定位工作带来了一些困扰。这种情况下我们可以采用冻结当前窗口方式,以达到自…

DB Query Analyzer中的事务管理在DB2中的应用

DB Query Analyzer中的事务管理在DB2中的应用 马根峰 ( 广东联合电子收费股份有限公司, 广州 510300) 摘要 事务控制是数据库应用系统中的关键技术之一,概述了事务控制的概念以及《DB Query Analyzer》中的事务控制,以一个具体的实例,给…

servlet返回数据给html_Servlet 简介

Servlet 简介 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作…

linux 64位 寻址空间_Ubuntu 20.04(64位)如何配置gcc-3.4用于编译linux-0.11

首先下载gcc-3.4地址:http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-3.4/下载三个文件,分别是cpp-3.4_3.4.6-6ubuntu2_amd64.debgcc-3.4-base_3.4.6-6ubuntu2_amd64.debgcc-3.4_3.4.6-6ubuntu2_amd64.deb也可打开想要保存到的文件夹后&#xf…

[html] 如何使用普通元素拥有像textarea元素一样缩放?

[html] 如何使用普通元素拥有像textarea元素一样缩放? resize:both;个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

python瞎练

需求:有不规则列表 singlelist3 [ 总计, 每吨人工:, 总人工, 1748.07, 金额],如果当前元素为字符串且该元素的下一个相邻位置仍为字符串,那么请在该元素后面插入数字0,如同 singlelist3 [ 总计,0.00, 每吨…

发布一个jQuery插件:formStorage

中午休息时,没有睡意,没事写了个jquery插件:formStorage. 原理很简单,通过本地存储机制(userData或者localStorage),存储表单中元素的状态到本地. 需要时可以把所存储的状态还原到表单元素上. 其中也用了json数据格式, 之前想对插件中所需的功能,从零开始写,但是觉得太冗余,没必…

简述python是怎么处理异常的-Python异常处理知识点总结

python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。 异常处理: 本站Python教程会具体介绍。 断言(Assertions):本站Python教程会具体介绍。 python标准异常 异常名称 描述 BaseException 所有异常的基类 SystemExit…

[html] html如何启动本地的exe应用?

[html] html如何启动本地的exe应用? 一般采用自定义浏览器协议的方式实现,可跨平台. 需要exe配合,修改目标机器的注册表. 如果要检测客户端是否已经安装对应的程序,可配合custom-protocol-detection这个项目. 关键词: detect browser custom proctocl个人简介 我是…

判断一个java对象中的属性是否都未赋值_100道Java基础面试题(一)

100道Java基础面试题(一)未来大家将步入职场,面试的时候面试官还会问大家一些Java相关的问题。小编整理出100道非常实用的面试题目,可以帮助双体的小伙伴应对面试,我们一起来看看都有哪些吧!1.什么是B/S架构?什么是C/S…

51学吧

一个很不错的自学网站:51学吧。 里面的教程挺多的。 以后经常性的看一看。 每天抽出一些时间,好好学习一下。 每天进步一点点,坚持下去。 转载于:https://www.cnblogs.com/kuixing1986/archive/2013/03/02/2940236.html

Ubuntu 手动安装JDK

终于成功手动安装了JDK,在此分享一下,希望所有开始使用ubuntu的新手能够用上自己所需版本的JDK。 1.下载JD: http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.将下载的文件copy到自己指定的目录 3.打开终端&#xff0…

python中的defaultdict_简介Python的collections模块中defaultdict类型的用法

defaultdict 主要用来需要对 value 做初始化的情形。对于字典来说,key 必须是 hashable,immutable,unique 的数据,而 value 可以是任意的数据类型。如果 value 是 list,dict 等数据类型,在使用之前必须初始…

电脑cpu温度过高怎么办_网络资讯:电脑cpu占用过高处理办法

今天来说一下电脑cpu占用过高处理办法这方面的一些讯息,不少朋友对电脑cpu占用过高处理办法这方面的一些讯息颇感兴趣的,小编今天就整理了一些信息,希望对有需要的朋友有所帮助。1、安装并使用杀毒软件全面杀毒;2、优化系统自启动软件;3、把软…

[html] 举例说明图片懒加载的方案有哪些?

[html] 举例说明图片懒加载的方案有哪些? 利用 getBoundingClientRect() 这个 API 获取图片元素相对于视口的位置,来判断是否需要加载图片利用 IntersectionObserverEntry接口 获取目标元素与容器的相交状态个人简介 我是歌谣,欢迎和大家一起…

深度学习之数学基础(临时记录)

深度学习之数学基础(数值计算) 深度学习之数学基础(线性代数篇) 深度学习之数学基础(概率与统计) 转载于:https://www.cnblogs.com/tlz888/p/11381484.html

[html] html5的游戏引擎你了解多少?都有哪些比较好用的引擎呢?

[html] html5的游戏引擎你了解多少?都有哪些比较好用的引擎呢? 最近接了个小项目 接触了一个游戏引擎 Phaser 主攻2D Phaser用的别家的内核把 自己加壳子其他的只是看过介绍个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易&am…