katie的词汇

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

感谢我们敬爱的katie的倾囊相与!

(一直想把katie的听写格式化一下,做成anki卡组,最近终于是厚着脸皮去要了来: -D
文件链接在文尾 )
关于anki

这里用python-pptx库读取pptx内容

pptx库官方文档
PyPI
ppt长这样:
在这里插入图片描述

代码如下

所有的过程解释均在代码中

import pptx
f=open("6.13pptx_try_out.txt","w")
def mainprocess():
    count=0
    fp="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+=1
    print(count)
    #print(shape1[0].has_text_frame)
def is_english_char(ch):
    #判断单个字符是否是英文字符或数字
    t= ord(ch)
    if t>=1 and t <=127:
        #英文
        return 1
    else:
        #中文
        return 0

def is_c(stt):
    #判断是否主要为为中文
    ad=0
    k=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=0
    for i in range(2):
        addd=addd+is_english_char(stt[i])
    if ad/k <= 0.6 or addd == 0 :
        #较少出现英文,或前两个全为英文,则为中文
        return 0
    else:
        #出现英文则为英文
        return 1

if __name__ == '__main__':
    mainprocess()

一开始运行出来79个报错,瞬间自闭。经仔细观察调试,其中动词变位题占了绝大多数
在这里插入图片描述
后来几经波折,最终将报错降到0个,其时喜悦之至
在这里插入图片描述
但还是存在很多问题:模块化不够彻底,逻辑不清晰,对问题的解析不够到位等
不过好歹能完成任务了
出结果txt在这里插入图片描述
将其导入anki中
在这里插入图片描述
导入时发现了一些有意思的事情,也暴露了程序不完善之处,同时看到了anki的bug:导入文件间隔符号前为空的行会被跳过(还有字符串拼接的低级错误 >_<|||)
在这里插入图片描述
经修正,卡片数恢复正常

文件链接:
链接:http://ctbfl.xyz
cKey为katie的中文名

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值