Word文档的读入【2】

news2024/9/24 11:33:34

现在,乔老师已经了解了Word文档的基本结构。
下面,我们通过观察一份答题卡来思考一下每条信息的具体位置。这样,在后面几天的学习和操作中,我们就能更快、更准确地读取到答题卡中的信息。
这份答题卡是由一个表格和一些段落组成。
其中,学生的学号位于第4个段落中的
第二个样式块

接下来,我们需要读取答题卡中的表格来获取学生的选择题答案。
表格中的第二行是学生填写的内容,只需依次读取这一行中的信息,然后和标准答案进行对比,便可以算出选择题分数。

最后,通过依次读取剩下段落中的第二个样式块,我们便可以获取到学生的填空题内容。
填空题的第一题位于答题卡中的第9段,只需逐行读取到答题卡中的最后一个段落,然后和标准答案进行对比,便可以算出填空题的分数。

根据刚刚的定位,我们便可以得出获取学生学号、答题内容和对应分数的具体步骤:
1. 逐个读取班级文件夹下的学生答题卡
2. 获取学生的学号
3. 读取选择题答案并计算分数
4. 读取填空题答案并计算分数

在昨天的课程中,我们已经获取了学生的班级和姓名信息。现在,我们来根据昨天的定位,获取答题卡中学生的学号吧~具体步骤如下:
1. 安装和导入相关模块                     2. 读取答题卡
3. 读取指定段落                        4. 读取指定样式块
5. 获取文本内容

在终端中输入pip install python-docx安装模块。

要使用Python对Word文档进行读取,我们需要安装一个用于读取数据的工具python-docx。python-docx是一个用于创建和更新Word文档的开源模块。需要注意的是,该模块只可读取、写入.docx文件,不支持.doc文件。安装python-docx非常简单,在终端中输入代码:pip install python-docx即可。

代码:pip install python-docx

完善代码(请使用import导入docx

安装完python-docx模块后,下一步就是导入这个模块。需要注意的是,导入python-docx模块需要使用import docx,而不是import python-docx。

# 使用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]

   

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

    allStudentsData.append(studentData)

在安装和导入python-docx之后,读取指定路径下的Word文档需要使用函数:docx.Document()。只需将Word文档的路径作为参数传入该函数中即可。docx.Document()函数读取成功后,会返回一个Word文档对象。

逐步完善代码(读取当前答题卡并赋值给变量doc。

乔老师要读取文件夹中的每一份答题卡,就需要在for循环里,先使用os.path.join()函数拼接出当前答题卡的路径。我们将拼接好的路径赋值给了keyPath。
然后,再将keyPath作为参数传入到docx.Document()函数内即可。我们把读取出来的结果赋值给了变量doc,并输出进行查看。可以看到,读取出的结果是一个个的Word文档对象。

# 使用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]

   

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

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

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

    doc = docx.Document(keyPath)

    # 使用print输出doc

    print(doc)

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

    allStudentsData.append(studentData)

总结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用API有效率地管理Dynadot域名,查看某一订单当前的状态

前言 Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮箱&…

完美解决下载安装pytorch cuda版本超级慢的问题

问题描述 最近使用pytorch官网安装pytorch cuda版本的命令安装,使用的是官方的镜像源,速度非常慢,通常只有200KB/s;记得以前安装的时候速度可以达到10M/s,不知道最近是不是对国内限速了。 尝试更换成国内镜像源&…

Maven常用标签及作用

Maven常用标签及作用 Maven常用标签及作用parent标签 dependencies和dependencyManagement,以及两者的区别dependencies标签dependencyManagement标签packaging标签 Maven常用标签及作用 parent标签 依赖管理:父POM可以定义一组共享的依赖项(dependenc…

m3u8网页视频文件爬取与视频合成

文章目录 m3u8网页视频文件爬取与视频合成下载m3u8文件下载m3u8文件列表所对应的ts文件下载ffmpeg m3u8网页视频文件爬取与视频合成 我们经常在网络上找到的自己想要的视频素材却无法下载,并且打开控制台一看视频是通过分割成一份份的.ts文件发送过来的。 下载m3u8…

SDXL-Lightning容器构建指南

一、介绍 SDXL-Lightning 项目是由字节跳动开发的一个创新性的 AI 图像生成项目,该项目通过采用全新的蒸馏战略,优化了扩散模型,实现了从文字到高清图像的快速、高质量生成。 1. 项目背景与特点 背景 :随着 AI 绘画技术的不断发…

展会通过智慧客流统计分析优化运营策略-讯鹏科技

在当今数字化高速发展的时代,展会行业也在积极探索利用智慧科技进行转型与升级。其中,智慧客流统计分析成为了展会优化运营策略的关键要素。 智慧客流统计分析首先为展会提供了精准的数据支撑。通过先进的传感器、摄像头等设备,能够实时、准确…

以数据重塑服务管理体系,构建“无陪护病房” 数字化新生态 | 云生智慧护理运营系统

无陪护病房是一种新型的医院服务模式,旨在减轻患者家属的陪护负担,提供更加专业化和人性化的护理服务。 随着社会老龄化的加深和家庭结构的变化,2024年6月国家推出关于“无陪护病房”规范发展,无陪护病房服务有望在全国范围内得到…

SAP ABAP 删除请求

不小心把一个不想改的程序激活了,创建请求了怎么办 在se09里点击修改,然后删除即可

在线翻译工具盘点,这四大工具值得推荐!

翻译工具的存在方便了我们阅读跨语种的文件,跨文化交流变得前所未有的便捷。今天,就让我们一起来探索包括谷歌翻译的几款深受用户喜爱的翻译工具吧! 福昕在线翻译 直达链接: https://fanyi.pdf365.cn/ 提到福昕在线翻译&#…

使用vue2+axios+chart.js画折线图 ,出现 RangeError: Maximum call stack size exceeded 错误

目录 效果图 解决方案 修正要点 效果图 修改前App.vue代码&#xff1a; <template><div id"app"><canvas id"myChart"></canvas></div> </template><script> import axios from axios; import { Chart, regis…

(rs系列)rs6之补环境

网址&#xff1a;aHR0cHM6Ly93d3cubm1wYS5nb3YuY24vZGF0YXNlYXJjaC9ob21lLWluZGV4Lmh0bWw rs6同样是两次html请求&#xff0c;第一次是412&#xff0c;cookie的差异性跟4、5同理&#xff0c;需要注意的是rs6无限debugger有三个&#xff0c;并且第三个需要注入hook代码才能过掉。…

从0开始搭建自动化测试平台,构建自动化测试平台的最全指南!

前言 随着软件开发的不断进步&#xff0c;测试工程师也需要跟上趋势并适应新的测试方法。自动化测试已成为现代测试领域中不可或缺的一部分。它可以提高测试效率、减少测试成本&#xff0c;并且可以避免人为错误对测试结果的影响。在这篇文章中&#xff0c;我们将介绍如何构建…

基于STC12C5A60S2单片机的LED汉字显示系统的设计

本设计基于单片机的LED汉字显示装置&#xff0c;该设计以STC12C5A60S2单片机为核心&#xff0c;利用最小系统和多个模块完成设计&#xff0c;包括点阵驱动模块、时钟模块、串口通信模块、红外线接收模块以及LED点阵屏。其中&#xff0c;点阵驱动模块采用74HC245芯片设计完成&am…

基于Python的电影推荐系统设计与实现---附源码80129

摘要 本项目旨在基于Python设计和实现一个电影推荐系统&#xff0c;旨在为用户提供个性化的电影推荐服务。通过分析用户的观影历史、评分和偏好等数据&#xff0c;系统将利用推荐算法为用户推荐符合其口味的电影。该系统将结合Python编程语言和数据分析技术&#xff0c;实现智能…

让AI给你写代码(10.2)具备调用本地库能力的AI小助手代码资源及简单介绍

接上一篇让AI给你写代码(10.1): 按接口编程的思想,统一利用内部和外部的接口,逐步扩展和提升AI编程能力 这篇我们将对照需要解决的问题,比较详细介绍一下AI小助手相关代码架构、实体,相关方法和工具。 对照10.1 新版AI小助手的需要做的流程如下: 与10.1流程图基本一致…

Docker部署nginx容器无法访问80端口

问题说明 在阿里云ECS服务器上部署一台CentOS服务器&#xff0c;然后在里面安装了docker服务。用docker部署了nginx&#xff0c;开启docker中的nginx服务&#xff0c;映射宿主机端口80 把阿里云服务器上面的安全组放开了80端口 但是还是无法访问nginx的80web界面 问题分析 查…

油猴脚本安装,3种安装方法

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

并发编程:AQS(上)

一、AQS 是什么&#xff1f; AQS 的全称为 AbstractQueuedSynchronizer &#xff0c;翻译过来的意思就是抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。 AQS 就是一个抽象类&#xff0c;主要用来构建锁和同步器。 public abstract class AbstractQueuedSynch…

怎么抓住威士忌蓝海市场?

​前些天和朋友吃饭&#xff0c;聊起来威士忌。 朋友说&#xff0c;这个威士忌啊&#xff0c;最近几年增值特别快&#xff0c;甚至超过了黄金、名表、艺术品、红酒这些经典的投资品类。而且存放得越久&#xff0c;升值的幅度就越大。 再加上&#xff0c;中国的威士忌市场现在…

3GPP NTN定义了哪些band?

卫星频段主要包括以下几种&#xff1a; L波段(1–2 GHz)&#xff1a;主要用于移动卫星通信、导航系统和无线电测绘。例如&#xff0c;全球定位系统 (GPS) 运营商以及卫星移动电话&#xff0c;如 Iridium和 Inmarsat提供海上、陆地和空中通信。 S波段(2–4 GHz)&#xff1a;广泛…