Python Excel MySQL
这是第一天写博客
最近要考GRE,所以在刷题的同时要背单词,作为一个Python 小白,也想练习一下Python 和SQL,于是萌生了写这个blog的想法具体的目标是将EXCEL作为最初的载体,将单词导入实现刷单词的功能,最后将词库更新存储至SQL数据库。 所以第一步要做的就是规定好EXCEL的格式,因为这是第一天,所以打算从最简单的功能开始实现起。
将大象装到冰箱里需要几步
-
首先是对于EXCEL 的格式,因为还在试验功能的阶段,并没有需要在EXCEL里存储太多数据,所以先弄一个简单的格式看看。
次数代表重复出现过几次,英文释义打算联系一下爬虫,从韦氏字典里爬取,这个是在接下来的需要弄的步骤,今天不着急。 -
代码
我打算使用openpyxl包来进行EXCEL读写功能,具体功能很多相关的帖子
首先我们需要一个EXCEL文件的路径名,而且由于个人习惯,所以先写好了主函数,在主函数里打算用两个步骤来实现想要的操作,分别是调取命令和执行命令。
if __name__ == "__main__":
excel_path = 'C:\\Users\\Administrator\\Desktop\\Python_Vocabulary.xlsx'
all_info = []#建立一个空list来装临时数据,不然在test(all_info)会报错
extract(excel_path,all_info)
test(all_info)
定义提取函数,返回一个名字为all_info的list,以供test()方程方便处理数据
def extract(excel_path,all_info):
file = openpyxl.load_workbook(excel_path)
sheet = file.active#激活,这个网上可以找到很多命令,不是特别难但是我也不太清楚,等我弄清楚了在专门写一个命令的blog。
#将获取信息保存在列表中
for row in sheet.rows:
item = [cell.value for cell in row]]#生成一个list中的list来储存每个单元格的数据
all_info.append(item)
return all_info
返回的all_info 为一个 list [[‘次数’, ‘单词’, ‘英文释义’, ‘同义词’], [‘0’, ‘temperaments’, None, None], [‘0’, ‘contigent’, None, None], [‘0’, ‘proscribe’, None, None], [‘0’, ‘cogent’, None, None], [‘0’, ‘tout’, None, None]]。因为我先写的代码,以防止数据多了不能用,所以现在数据比较少
然后定义test函数
def test(all_info):
num = list(range(1, len(all_info)))#全体测试个数;要注意range()输出的是一个class要处理城list格式
while num != list():#如果num非空,也就是还有单词没背完
pick = random.choice(num)#随机抽取
#all_info[pick][0] =+ 1
#记忆次数加一这个办法不可行
all_info[pick][0] = int(all_info[pick][0]) + 1 #记忆次数加一,我也不明白为什么一开始是int后来变成不是int,之前的办法只能加到1
for j in range(len(all_info[0])):
print(all_info[0][j], all_info[pick][j], sep=':')
ans = str(input('do you know this word, yes=1,no=0: \n'))
if ans == '1':
num.remove(pick)#去掉这个选项
elif ans == '0':
num.append(pick)#增加这个选项的概率(不记得一次多背一遍)
print('Congratualtion! you finish all of them again')
在我逐渐更新我的单词库的时候,将他们post上来,如果有需要的可以自取
完整代码如下
#coding=utf-8
import openpyxl
import random
def extract(excel_path,all_info):
file = openpyxl.load_workbook(excel_path)
sheet = file.active
#将获取信息保存在列表中
for row in sheet.rows:
item = [cell.value for cell in row]#生成一个list中的list来储存每个单元格的数据
all_info.append(item)
return all_info
def test(all_info):
num = list(range(1, len(all_info)))#全体测试个数
while num != list():
pick = random.choice(num)
all_info[pick][0] = int(all_info[pick][0]) + 1 # 次数加一
for j in range(len(all_info[0])):
print(all_info[0][j], all_info[pick][j], sep=':')
ans = str(input('do you know this word, yes=1,no=0: \n'))
if ans == '1':
num.remove(pick)#去掉这个选项
elif ans == '0':
num.append(pick)#增加这个选项的概率
print('Congratualtion! you finish all of them again')
if __name__ == "__main__":
excel_path = 'C:\\Users\\Administrator\\Desktop\\Python_Vocabulary.xlsx'
all_info = []
#judge = input('do you want update your Vocabulary database, yes=1, no=0: \n'),以后更新用
extract(excel_path,all_info)
test(all_info)