ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-08-17 12:57:44  阅读:176  来源: 互联网

标签:mylist 函数 python self excel 35 columnline staticdict def


import collections
class headhandler():
    def __init__(self,mylist):
        self.mystorage={}
        self.mylist = mylist
    def delempty(self):
        '''
        去除重复
        :return:
        '''
        while "" in self.mylist:
            self.mylist.remove("")
    def formatmydata(self,i):
        try:
            i=i.replace(":","")
        except Exception:
            i=i
        return i
    def 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.mystorage
    def finalchart(self):
        self.delempty()
        self.mylist = list(map(self.formatmydata,self.mylist))
        #print(self.mylist)
        finalchart = self.turntodict()
        #print(finalchart)
        return finalchart

class 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.mylist
    def 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.columnline

    def 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}

 

标签:mylist,函数,python,self,excel,35,columnline,staticdict,def
来源: https://www.cnblogs.com/saintdingspage/p/11368194.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有