源起
陪少年背单词,一直没有一款的称手的APP。试过几个,都只能使用预设的单词表。但实际情况是,每天我们都会从课文、绘本或者视频中发现一些新的单词,我迫切需要一个自定义的单词本。
以前我都是帮他抄在本子上,再根据记忆曲线的原理,分别写在后续1天、2天、5天、17天和31天的复习单上。随着单词越来越多,抄起来就越来越繁琐。
所以,我一直琢磨着写个程序来解决这个问题。
因为每天收集新单词进列表,每天又取需要复习的单词表,我取了个好玩的名字,叫“单词银行”。
备忘:处理OFFICE相关的库
EXCEL的读和写
pip install Xlwt;
pip install Xlrd;
WORD相关
pip install Python-docx;
PowerPoint相关
pip install Python-pptx;
源代码
# 目标:做一个基于记忆曲线的背单词辅助工具
# 输入方式:每天一行,保存在一个Excel表中。存储列表的默认位置是C:\cr_python\wordlist.xlsx
# 输出方式:每天输出要复习的单词,打印成一个Word文件
# 记忆曲线的体现:第1天、2天、5天、17天、31天。
# 完成了Excel读出和Word写入。 Aug. 13th, 2019.
# 完成了日期的计算。 Aug. 14th, 2019.
# 对于路径的一些优化,可以使用OS库。 TODO
# 不知道如何表示Tab,/t好像不行。 TODO
# 当列表很长时,如果优化算法? TODO
import xlrd #读入Excel的库
from docx import Document #处理Word的库
import datetime #处理datetime的库
def printTheDay(base):
document = Document()
document.add_heading('今日复习', 1)
wordlist = xlrd.open_workbook('C://cr_python//wordlist.xlsx')
sheet = wordlist.sheet_by_index(0)
#print(sheet.cell(0, 0).value)
for row in range(sheet.nrows):
time = xlrd.xldate_as_datetime(sheet.cell(row, 1).value, 0) #将本行第1个单元取出为datetime类型,用于计算。
intervals = (base - time).days
#print(intervals)
if intervals == 0 or intervals == 1 or intervals == 2 or intervals ==5 or intervals == 17 or intervals ==31:
text = ""
for col in range(sheet.ncols):
if col > 1:
#print(sheet.cell(row, col).value)
text += sheet.cell(row, col).value
text += " " #不知道如何表示Tab,/t好像不行。 TODO
document.add_paragraph(text)
#document.add_page_break()
document.save('today.docx')
today = datetime.datetime.now()
printTheDay(today)
网友评论