DDR爱好者之家 Design By 杰米
一、建立数据库
根据需求建立数据库,建立了两个表,并保证了可以将数据存储到已有的数据库中,代码如下:
import sqlite3 def createDataBase(): cn = sqlite3.connect('check.db') cn.execute('''CREATE TABLE IF NOT EXISTS TB_CHECK (ID integer PRIMARY KEY AUTOINCREMENT, NUMBER INTEGER, ITEM TEXT, REFERENCE TEXT, SUMMARY TEXT, OBJECT TEXT, METHOD TEXT, CONDITION TEXT, VALUE TEXT, RESULT TEXT, SCORE TEXT, REMARKS TEXT, PROVINCE TEXT, TIME TEXT);''') cn.execute('''CREATE TABLE IF NOT EXISTS TB_SCORE (ID integer PRIMARY KEY AUTOINCREMENT, PROVINCE TEXT, TIME TEXT, FILETYPE TEXT, SCORE INTEGER);''') if __name__ == '__main__': createDataBase()
二、使用Python解析excel
Python中的xlrd模块用来解析excel。
相关功能介绍如下:
1. 导入
import xlrd
2. 读取数据
data = xlrd.open_workbook('file.xls')
3. 功能
(1) 通过索引获取
table = data.sheet()[0] table = data.sheet_by_index(0)
(2)通过名称获取
table = data.sheet_by_name(u'sheet1')
(3)获取整行和整列的值(数组)
table.row_values(i) table.col_values(i)
(4)获取行数和列数
nrows = table.nrows ncols = table.ncols
(5)循环行列表数据
for i in range(nrows): print table.row_values(i)
(6)单元格
cell_A1 = table.cell(0,0).value
(7)使用行列索引
cell_A1 = table.cell(0,0).value
练习代码:
import xlrd import xlwt from datetime import date,datetime def read_excel(): # 打开文件 workbook = xlrd.open_workbook(r'file.xls') # 获取所有sheet sheet_name = workbook.sheet_names()[0] sheet = workbook.sheet_by_name(sheet_name) #获取一行的内容 for i in range(6,sheet.nrows): for j in range(0,sheet.ncols): print sheet.cell(i,j).value.encode('utf-8') if __name__ == '__main__': read_excel()
三、Python读取文件名并解析
为了将各个文件的数据加以区分,需要将文件名中标志性字段入库,解析文件的代码如下:
import os def getFileList(dir,wildcard,recursion): os.chdir(dir) fileList = [] check_province = [] check_time = [] file_type = [] exts = wildcard.split(" ") files = os.listdir(dir) for name in files: fullname=os.path.join(dir,name) if(os.path.isdir(fullname) & recursion): getFileList(fullname,wildcard,recursion) else: for ext in exts: if(name.endswith(ext)): fileList.append(name) check_province.append(name.split('-')[1]) check_time.append(name.split('-')[0]) file_type.append(name.split('-')[2]) return fileList,check_time,check_province,file_type
在接下来的使用中 会遇到编码问题 所以在使用这些字段时需要先转码,编写转码函数如下:
#转码函数 def changeCode(name): name = name.decode('GBK') name = name.encode('UTF-8') return name
四、解析excel文件并将其存储到sqlite
Python连接数据库 选取了Python自带的sqlite数据库 相对简单 在此不做太多介绍 如果大家对Python操作sqlite有疑惑的话 个人推荐菜鸟教程~
下面是解析excel文件并存入数据库,其中包含了判断单元格内容:
def readExcel(filename,cn,check_province,check_time,FileType): #读取 workbook = xlrd.open_workbook(filename) # 获取sheet sheet_name = workbook.sheet_names()[0] sheet = workbook.sheet_by_name(sheet_name) check_Item = 'a' itemCount = 0 score = 0 second = sheet.cell(7,1).value.encode('utf-8') for i in range(7,sheet.nrows): if sheet.cell(i,1).value.encode('utf-8') == second: check_Item = sheet.cell(i,0).value.encode('utf-8') continue temp = [] for j in range(0,sheet.ncols): temp.append(sheet.cell(i,j).value.encode('utf-8')) answer = sheet.cell(i,7).value.encode('utf-8') if answer == "yes" or answer == "no": score = score + 1 if answer == "other": print "!!!Failed to import'%s'" % (filename) print "!!!Please Choose an Right Answer for '%s'--------"%(filename) break else: cn.execute("insert into TB_CHECK (ITEM,FIELD,TYPE,CONTENT," "ATTRIBUTE,CHECKPOINT,REMARKS,ANSWER,DESCRIPTION," "SUGGESTION,PROVINCE,TIME,STYLE) " "values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" ""%(temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9],check_province,check_time,check_Item)) itemCount = itemCount + 1 if itemCount != 0: score = round(score * (100 / itemCount), 2) cn.execute("insert into TB_SCORE (PROVINCE,TIME,FILETYPE,SCORE) " "values('%s','%s','%s','%.2f')"%(check_province,check_time,FileType,score)) print "Successful for'%s'--------" % (filename) cn.commit()
整合上述功能:
def importData(path): # 数据库 createDataBase() database = sqlite3.connect("check.db") #文件类型 wildcard = ".xls" list = getFileList(path,wildcard,1) nfiles = len(list[0]) #文件名 file = list[0] #时间 time = list[1] #省份 province = list[2] # #文件类型 FileType = list[3] for count in range(0,nfiles): filename = file[count] check_province = changeCode(province[count]) check_time = time[count] File_type = changeCode(FileType[count]) readExcel(filename,database,check_province,check_time,File_type) if __name__ == '__main__': if len(sys.argv) != 2: print "Wrong Parameters" else: path = sys.argv[1] importData(path)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能有所帮助,如果有疑问大家可以留言交流。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
更新日志
2024年11月25日
2024年11月25日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]