• python Excel解析成Dict格式


    # -*- coding: utf-8 -*-
    
    import os
    
    #存放配置文件目录
    filePath = os.path.join(os.path.dirname(__file__), 'pyConfig')
    
    #文件名
    fileName = "pyInfo.txt"
    
    
    ## 解析Excel
    # 
    ## None
    class ReadPySlx():
        
        ## 初始化
        # @parma beginLine 数据从哪一行开始有效
        # @parma fileName 目标文件名
        ## return None
        def __init__(self, beginLine, fileName):
            self.beginLine = beginLine   #正文开始的行数
            self.fileName = fileName     #文件名
            self.headNameList = []       #字段头列表
            self.headCnt = 0             #字段头的数量
            self.contentDict = {}        #最后保存的字典
        
        
        ## 读目标文件
        # @parma None Null
        ## return None
        def readFile(self):
            tagFile = open(self.fileName, 'rb')
            
            #逐行读文件
            for index, lineInfo in enumerate(tagFile):
                if len(lineInfo.strip()) <= 0:
                    break
    
                #不是头文件并且还没到正文
                if index < self.beginLine and index != 0:
                    continue
                
                lineList = lineInfo.strip().split('\t')
                lineCnt = len(lineList)
                
                #空行
                if lineCnt <= 0:
                    break
    
                #是字段头
                if index == 0:
                    self.headNameList = lineList
                    self.headCnt = lineCnt
                    continue
    
                #字段错误,和字段头不对应
                if lineCnt != self.headCnt:
                    print "##line cnt error, index=%s"%index
                    break
                
                #添加到字典
                self.explainList(lineList)
    
            tagFile.close()
            
            return
            
        
        ## 解析成字典
        # @parma lineList 每行字段值的列表
        ## return None
        def explainList(self, lineList):
            lineDict = {}
            tagLineDict = {}
            
            for i in range(self.headCnt):
                lineDict[self.headNameList[i]] = lineList[i]
            
            tagLineDict[lineList[0]] = lineDict
            
            self.contentDict.update(tagLineDict)
    
            return
        
    
    
    
    #------------------------------------------------------------
    FilePath = os.path.join(filePath, fileName)
    a = ReadPySlx(2, FilePath)
    a.readFile()
    print a.contentDict
    
    #------------原Excel文件保存为txt-----------------
    #playerId    addGold    addExp
    #玩家id    增加金子数    增加经验数
    #10000    100    200
    #10001    101    201
    #10002    102    202
    #10003    103    203
    #10004    104    204
    #10005    105    205
    #10006    106    206
    
    
    #---------------------解析后生成的字典-----------------------------
    #{
    #'10004': {'playerId': '10004', 'addExp': '204', 'addGold': '104'}, 
    #'10005': {'playerId': '10005', 'addExp': '205', 'addGold': '105'}, 
    #'10006': {'playerId': '10006', 'addExp': '206', 'addGold': '106'}, 
    #'10000': {'playerId': '10000', 'addExp': '200', 'addGold': '100'}, 
    #'10001': {'playerId': '10001', 'addExp': '201', 'addGold': '101'}, 
    #'10002': {'playerId': '10002', 'addExp': '202', 'addGold': '102'}, 
    #'10003': {'playerId': '10003', 'addExp': '203', 'addGold': '103'}, 
    #}
  • 相关阅读:
    AngularJS中实现无限级联动菜单
    理解AngularJS生命周期:利用ng-repeat动态解析自定义directive
    denounce函数:Javascript中如何应对高频触发事件
    Javascript中的循环变量声明,到底应该放在哪儿?
    优雅的数组降维——Javascript中apply方法的妙用
    如何利⽤360Quake挖掘某授权⼚商边缘站点漏洞
    Java课程设计--网络聊天室
    DS博客作业08--课程总结
    DS博客作业07--查找
    DS博客作业06--图
  • 原文地址:https://www.cnblogs.com/richard403/p/2922633.html
Copyright © 2020-2023  润新知