Word文档的读取(1)

读取一个班的答题卡

解决方法:

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 导入os模块后,将乔老师的文件夹路径 /Users/qiao/answerKey 赋值给变量allKeyPath。 使用os.listdir()函数获取该路径下所有的答题卡名称列表,并赋值给变量allItems。 最后使用for循环遍历所有答题卡,并在循环内使用print输出文件名称。 |
| 因为我们要进行文件相关的操作,所以需要在一开始使用import导入Python内置的os模块。乔老师使用的是macOS系统的电脑,他将学生的答题卡保存到了路径为 /Users/qiao/answerKey 的文件夹中。我们需要先获取该文件夹下所有的答题卡列表,再使用for循环遍历文件夹中所有学生的答题卡,以便之后逐个读取信息。 |
| |

完成了第一个步骤,接下来,我们就需要在for循环里,依次获取每位学生的班级、姓名、学号、选择题分数和填空题分数。
面对总共三个班的学生,每位学生都有相对应的五条信息,我们应该如何在程序中存储这些数据呢?

|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 确定使用字典来存储每个学生的数据后,我们可以在for循环外,使用一个列表来汇总存储所有学生的字典数据。 如图所示:列表中的每个元素就是一个装了学生信息的字典。 |

现在,就可以在for循环里,根据答题卡的文件名来依次获取学生的班级和姓名信息,并将它们存储到studentData字典里。一份答题卡的完整名称为:"x年级x班-xxx.docx"。我们需要先获取文件名的前半段"x年级x班-xxx",再分别获取其中的班级信息"x年级x班"和姓名信息"xxx"。

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 根据注释,填写代码。 |
| 我们可以通过++os.path.splitext()++ 函数来获取文件名的的前半段:"x年级x班-xxx"。然后,通过字符串的内置函数++split()++ ,以"-"为分隔符,并配合索引,来分别获取班级信息"x年级x班"和姓名信息"xxx"。我们把班级信息储存在studentData的 classInfo 键里,姓名信息存储在studentData的 name 键里,并在代码最后使用print输出了变量allStudentsData进行查看。 |
| # 使用import导入os模块 import os # 将乔老师的答题卡文件夹路径 /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 # 使用append()函数将studentData添加到总学生数据allStudentsData中 allStudentsData.append(studentData) # 使用print输出变量allStudentsData print(allStudentsData) |

还记得帮助乔老师解决问题的++步骤++ 吗?
刚刚我们已经完成了前两步,现在我们来完成第三步:确定答题卡中要读取的信息位置。在开始确定答题卡中要读取的信息位置前,我们需要先学习一下Word文档的基本结构。

一个Word文件就是一个Word文档(Document)。Word文档(Document)的基本组成单位是段落(Paragraph)。标题、目录、正文、图形、空行都是段落。

连续具有相同样式的基本单元可称为一个样式块(run)。例如,图中这一段话原本是同一个样式块。但在这个段落中加粗一个字,那么这个字就形成了一个样式块。并且这个加粗的字的左右两边都被切割成了新的样式块。这样这句话就变成了三个样式块。没有任何内容的空行段落里没有样式块。段落里只要有内容就至少包含一个样式块。

除了段落外,Word文档中还能嵌入表格(Table)。表格和段落在Word文档中属于并列级别。也就是说表格不属于任何段落,我们不能够通过遍历段落来获取表格。

和Excel表格的结构很相似,Word文档中的表格也是由单元格(Cell)组成。
单元格中的内容可以包含段落和表格,相当于独自构成了一个完整的Word文档。

我们可以通过行(Row)和列(Column)对单元格进行定位。
和++Excel++ ++表格++ 不同,Word文档中的表格行号和列号都默认从数字0开始,并依次递增。

至此,我们就掌握了Word文档的基本结构

习题:

现在,乔老师已经了解了Word文档的基本结构。

相关推荐
学测绘的小杨11 小时前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz31017 小时前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐18 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱1 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot1 天前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海1 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱2 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽2 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码2 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱2 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理