word文档的读入(4)

刚刚我们获取到的是段落和样式块对象,要想读取到真正的文本内容,需要通过.text属性来访问。
不同的需求对应不同的操作。比如:
如果想读取某一段落中的所有文本,就使用.paragraphs[{段落索引}]获取到段落对象后,再访问它的.text属性;如果想读取某一个样式块中的文本内容,则是在使用doc.paragraphs[{段落索引}].runs[{样式块索引}]读取到具体的样式块对象后,访问.text属性。

逐步完善代码(根据注释,填写代码。

本例中,展示了读取学号的具体代码,也就是读取第四段的第二个样式块的文本内容。
我们将读取出来的结果存储到了studentData字典里的id键中。
在代码最后,使用print输出了存储所有学生信息的列表allStudentsData

# 使用import导入os模块

import os

# 使用import导入docx

import docx

# 将乔老师的答题卡文件夹路径 /Users/qiao/answerKey 赋值给变量allKeyPath

allKeyPath = "/Users/qiao/answerKey"

# 使用os.listdir()函数获取该路径下所有的文件,并赋值给变量allItems

allItems = os.listdir(allKeyPath)

# 定义一个空列表allStudentsData存储所有学生数据

allStudentsData = []

# 使用for循环逐个遍历所有学生答题卡

for item in allItems:

    # 定义一个空字典studentData存储单个学生数据

    studentData = {}

   

    # 使用os.path.splitext()函数获取文件名的前半段,并赋值给变量fileName

    fileName = os.path.splitext(item)[0]

    # 使用split()函数以"-"分隔文件名,将第1部分班级信息赋值到学生数据字典的classInfo键里

    studentData["classInfo"] = fileName.split("-")[0]

    # 使用split()函数以"-"分隔文件名,将第2部分姓名信息赋值到学生数据字典的name键里

    studentData["name"] = fileName.split("-")[1]

   

    # 使用os.path.join()函数拼接出答题卡路径,并赋值给变量keyPath

    keyPath = os.path.join(allKeyPath, item)

    # 读取答题卡并赋值给变量doc

    doc = docx.Document(keyPath)

   

    # 读取第四段学号段,并赋值给变量idPara

    idPara = doc.paragraphs[3]

    # 读取学号段中第二个样式块,并赋值给变量idRun

    idRun = idPara.runs[1]

    # 读取学号,并赋值到学生数据字典的id键里

    studentData["id"] = idRun.text

   

    # 使用append()函数将studentData添加到总学生数据allStudentsData中

    allStudentsData.append(studentData)

   

# 使用print输出变量allStudentsData

print(allStudentsData)

总结:

现在,乔老师已经能很轻松地将学生的学号提取出来了。
明天的课程里,我们将用类似的方法逐行读取填空题答案,并通过判断学生答案与标准答案是否一致来计算分数。
选择题的答案读取因为涉及到表格的读取,将在第四天的课程中学习。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值