最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python解析excel文件存入sqlite數(shù)據(jù)庫(kù)的方法

 更新時(shí)間:2016年11月15日 09:49:40   作者:楊可愛(ài)  
最近工作中遇到一個(gè)需求,需要使用Python解析excel文件并存入sqlite,本文就實(shí)現(xiàn)的過(guò)程做個(gè)總結(jié)分享給大家,文中包括數(shù)據(jù)庫(kù)設(shè)計(jì)、建立數(shù)據(jù)庫(kù)、Python解析excel文件、Python讀取文件名并解析和將解析的數(shù)據(jù)存儲(chǔ)入庫(kù),有需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

一、建立數(shù)據(jù)庫(kù)

根據(jù)需求建立數(shù)據(jù)庫(kù),建立了兩個(gè)表,并保證了可以將數(shù)據(jù)存儲(chǔ)到已有的數(shù)據(jù)庫(kù)中,代碼如下:

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模塊用來(lái)解析excel。

相關(guān)功能介紹如下:

1. 導(dǎo)入

import xlrd

2. 讀取數(shù)據(jù)

data = xlrd.open_workbook('file.xls')

3. 功能

(1) 通過(guò)索引獲取

table = data.sheet()[0]
table = data.sheet_by_index(0)

(2)通過(guò)名稱(chēng)獲取

table = data.sheet_by_name(u'sheet1')

(3)獲取整行和整列的值(數(shù)組)

table.row_values(i)
table.col_values(i)

(4)獲取行數(shù)和列數(shù)

nrows = table.nrows
ncols = table.ncols

(5)循環(huán)行列表數(shù)據(jù)

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

練習(xí)代碼:

import xlrd
import xlwt
from datetime import date,datetime

def read_excel():
# 打開(kāi)文件
workbook = xlrd.open_workbook(r'file.xls')
# 獲取所有sheet
sheet_name = workbook.sheet_names()[0]
sheet = workbook.sheet_by_name(sheet_name)

#獲取一行的內(nèi)容
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讀取文件名并解析

為了將各個(gè)文件的數(shù)據(jù)加以區(qū)分,需要將文件名中標(biāo)志性字段入庫(kù),解析文件的代碼如下:

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

在接下來(lái)的使用中 會(huì)遇到編碼問(wèn)題 所以在使用這些字段時(shí)需要先轉(zhuǎn)碼,編寫(xiě)轉(zhuǎn)碼函數(shù)如下:

#轉(zhuǎn)碼函數(shù)
def changeCode(name):
   name = name.decode('GBK')
   name = name.encode('UTF-8')
   return name

四、解析excel文件并將其存儲(chǔ)到sqlite

Python連接數(shù)據(jù)庫(kù) 選取了Python自帶的sqlite數(shù)據(jù)庫(kù) 相對(duì)簡(jiǎn)單 在此不做太多介紹 如果大家對(duì)Python操作sqlite有疑惑的話(huà) 個(gè)人推薦菜鳥(niǎo)教程~

下面是解析excel文件并存入數(shù)據(jù)庫(kù),其中包含了判斷單元格內(nèi)容:

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):
 # 數(shù)據(jù)庫(kù)
 createDataBase()
 database = sqlite3.connect("check.db")

 #文件類(lèi)型
 wildcard = ".xls"

 list = getFileList(path,wildcard,1)

 nfiles = len(list[0])
 #文件名
 file = list[0]
 #時(shí)間
 time = list[1]
 #省份
 province = list[2]
 # #文件類(lèi)型
 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)

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用python能有所幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

  • 詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes

    詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes

    這篇文章主要介紹了詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • python抽取指定url頁(yè)面的title方法

    python抽取指定url頁(yè)面的title方法

    今天小編就為大家分享一篇python抽取指定url頁(yè)面的title方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • python實(shí)現(xiàn)感知機(jī)線性分類(lèi)模型示例代碼

    python實(shí)現(xiàn)感知機(jī)線性分類(lèi)模型示例代碼

    這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)感知機(jī)線性分類(lèi)模型的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python倒排索引之查找包含某主題或單詞的文件

    Python倒排索引之查找包含某主題或單詞的文件

    倒排索引(英語(yǔ):Inverted index),也常被稱(chēng)為反向索引、置入檔案或反向檔案,是一種索引方法,被用來(lái)存儲(chǔ)在全文搜索下某個(gè)單詞在一個(gè)文檔或者一組文檔中的存儲(chǔ)位置的映射。這篇文章主要介紹了Python倒排索引之查找包含某主題或單詞的文件,需要的朋友可以參考下
    2019-11-11
  • 深入淺析python 中的self和cls的區(qū)別

    深入淺析python 中的self和cls的區(qū)別

    這篇文章主要介紹了python 中的self和cls的實(shí)例代碼及區(qū)別講解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 使用Tensorflow實(shí)現(xiàn)可視化中間層和卷積層

    使用Tensorflow實(shí)現(xiàn)可視化中間層和卷積層

    今天小編就為大家分享一篇使用Tensorflow實(shí)現(xiàn)可視化中間層和卷積層,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • PyQt QMainWindow的使用示例

    PyQt QMainWindow的使用示例

    這篇文章主要介紹了PyQt QMainWindow的使用示例,幫助大家更好的理解和學(xué)習(xí)使用pyqt,感興趣的朋友可以了解下
    2021-03-03
  • pytorch中Tensor.to(device)和model.to(device)的區(qū)別及說(shuō)明

    pytorch中Tensor.to(device)和model.to(device)的區(qū)別及說(shuō)明

    這篇文章主要介紹了pytorch中Tensor.to(device)和model.to(device)的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python Jupyter Notebook顯示行數(shù)問(wèn)題的解決

    Python Jupyter Notebook顯示行數(shù)問(wèn)題的解決

    這篇文章主要介紹了Python Jupyter Notebook顯示行數(shù)問(wèn)題的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python的pytest測(cè)試框架使用詳解

    Python的pytest測(cè)試框架使用詳解

    這篇文章主要介紹了Python的pytest測(cè)試框架使用詳解,說(shuō)到?pytest,大家總不免要拿來(lái)和?unittest?來(lái)比一下,但是?unittest?畢竟是標(biāo)準(zhǔn)庫(kù),兼容性方面肯定沒(méi)得說(shuō),但要論簡(jiǎn)潔和方便的話(huà),pytest?也是不落下風(fēng)的,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

浑源县| 苍山县| 察隅县| 界首市| 白河县| 庆元县| 巨鹿县| 南丹县| 荃湾区| 廊坊市| 乐东| 瑞金市| 九寨沟县| 四子王旗| 巴南区| SHOW| 梁平县| 郓城县| 新化县| 老河口市| 泸溪县| 从江县| 马关县| 凤冈县| 抚远县| 松江区| 青田县| 隆子县| 大竹县| 梨树县| 定日县| 桐城市| 宽城| 呈贡县| 剑阁县| 崇明县| 民丰县| 普宁市| 苏州市| 蓬溪县| 汾西县|