katie的词汇
感谢我们敬爱的katie的倾囊相与!
(一直想把katie的听写格式化一下,做成anki卡组,最近终于是厚着脸皮去要了来: -D
文件链接在文尾 )
关于anki
这里用python-pptx库读取pptx内容
pptx库官方文档
PyPI
ppt长这样:

代码如下
所有的过程解释均在代码中
import pptx
f=open("6.13pptx_try_out.txt","w")
def mainprocess():count=0fp="Dictation.pptx"presentation = pptx.Presentation(fp)#print(presentation.slides)slides_list = presentation.slides#slides是所有幻灯片的集合,可以用列表的形式表示shapes_list=[]#shapes_list为所有幻灯片中shapes的集合for i in slides_list:shapes_list.append(i.shapes)#print(shapes_list)for ii in range(len(shapes_list)):i = shapes_list[ii]# 到达每张幻灯片的形状树,i代表形状树result_list=[[],[],'']#[中文列表,英文列表,目录信息]add=''for k in i:#遍历某张幻灯片中的形状树内容,k表示形状if not(k.text[:9]=="Dictation"):#跳过无用的标题 Dictation XX#print(k)#print(k.shape_type)#print(k.text)#print(len(k.text))#print("这是",end="")#print(ChorEn)#从文本框中取出元素if k.shape_type == 14:#判断是否为PLACEHOLDER(目录信息所在)#print("tags= "+ k.text)result_list[2]=k.text#print(result_list)else:ChorEn = is_c(k.text) # 文本框的中/英情况add = add + " " + str(ChorEn - 1) # 计数,中文-1,英文0#print("不是目录耶")if k.has_text_frame:#形状中是否含有文本框#print("有frame")for para in k.text_frame.paragraphs:part = para.text#print("ta是:",end="")#print(part)if part != "":result_list[ChorEn].append(part)#print("加入成功")#print(result_list)#print(add)Yes_ok=(len(result_list[0])==len(result_list[1]))if Yes_ok == True:print("------")for i in range(len(result_list[0])):f.writelines(result_list[2] + "#" + result_list[0][i] + "#" + result_list[1][i] + "\n" )else:print("------")print("Error! Index="+str(ii))for i in result_list:for t in i:print(t)print(result_list[2])print("len1="+str(len(result_list[0]))+" len2=" + str(len(result_list[1])))print("add=",end="")print(add)print()count+=1print(count)#print(shape1[0].has_text_frame)
def is_english_char(ch):#判断单个字符是否是英文字符或数字t= ord(ch)if t>=1 and t <=127:#英文return 1else:#中文return 0def is_c(stt):#判断是否主要为为中文ad=0k=len(stt)for i in range(k):ad = ad + is_english_char(stt[i])print("ad=",end="")print(ad)print("k=",end="")print(k)addd=0for i in range(2):addd=addd+is_english_char(stt[i])if ad/k <= 0.6 or addd == 0 :#较少出现英文,或前两个全为英文,则为中文return 0else:#出现英文则为英文return 1if __name__ == '__main__':mainprocess()
一开始运行出来79个报错,瞬间自闭。经仔细观察调试,其中动词变位题占了绝大多数

后来几经波折,最终将报错降到0个,其时喜悦之至

但还是存在很多问题:模块化不够彻底,逻辑不清晰,对问题的解析不够到位等
不过好歹能完成任务了
出结果txt
将其导入anki中

导入时发现了一些有意思的事情,也暴露了程序不完善之处,同时看到了anki的bug:导入文件间隔符号前为空的行会被跳过(还有字符串拼接的低级错误 >_<|||)

经修正,卡片数恢复正常
文件链接:
链接:http://ctbfl.xyz
cKey为katie的中文名
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
