Word文档的读入(3)

news2024/9/21 8:01:01

逐个读取答题卡后,我们可以访问Word文档(Document)中的 .paragraphs 属性,来获取文档中的段落列表。段落列表的组成元素是所有的段落对象,可以使用索引定位到指定的段落对象。

完善代码(读取学生学号所在的段落,并赋值给变量idPara。

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

   

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

    allStudentsData.append(studentData)

获取了第四段的段落对象后,还需要读取这一段中指定的样式块。要获取段落中的样式块列表,需要访问段落对象中的 .runs 属性。
样式块列表的组成元素是所有的样式块对象。同样,可以通过 索引 获取到指定的样式块。

逐步完善代码(获取学生学号所在的样式块,并赋值给idRun

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

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

    idRun = idPara.runs[1]

   

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

    allStudentsData.append(studentData)

总结:

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

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

相关文章

FFmpeg 7.0 版本 “Dijkstra”的特点概述

FFmpeg 7.0 FFmpeg 官网:https://ffmpeg.org/FFmpeg 官网更新日志,2024.4.5 号发布代号"Dijkstra"的 7.0 版本的 FFmpeg,如下截图: 为什么叫 Dijkstra“Dijkstra” 指的是艾兹格戴克斯特拉(Edsger Wybe Dijkstra),他是一位荷兰计算机科学家,对计算机科学领域…

为什么Java已经不推荐使用Stack了?

为什么不推荐使用Stack Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque 为什么不推荐使用 性能低:是因为 Stack 继承自 Vector, 而 Vector 在每个方法中都加了锁。由于需要兼容老的项目,很难在原有的基础上进行优化&…

多目标优化算法求解WFG(Walking Fish Group)测试函数

WFG(Walking Fish Group)测试函数套件是一组用于多目标优化的基准测试问题,由Simon Huband, Luigi Barone, Lyndon While和Phil Hingston提出。这些测试问题旨在提供一个全面的测试平台,以评估多目标优化算法的性能。WFG测试集包含…

操作系统 --- 线程(Threads)概念 多线程模型 线程控制与组织

零、学习路线 一、线程的引入,什么是线程,为什么要引入线程? 如果说,在OS中引入进程的目的是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量,那么,在操作系统中再引入线程&#xff0c…

[网鼎杯 2020 朱雀组]Nmap 历程记录

分析:根据题目名称知道本题肯定会涉及nmap的使用,访问web页面 扫描自己,发现没啥有用的信息,他这里每扫一个主机会把扫描信息存在一个新的文件里,简单试了一下传的参数,也没发现sql注入 这个地方提供的参数会被nmap去拼…

新版idea java_home报错 以及markdown插件无法使用

报错:The environment variable JAVA_HOME(with the value of does not point to a valid JVM) 1.检查java环境发现换成jdk8 或者jdk17 都没有问题,但是idea还是报错 可能是由于idea界面采用新技术JCEF缺少环境,我的idea版本是20…

从腾讯大模型的「实用」路线,我们看到了企业应用AI的新方向

「现在每家公司都是 AI 公司,但引入 AI 之后,利润真的能提高吗?」 在针对 Transformer 作者、Cohere CEO Aidan Gomez 的一次采访中,播客主持人 Harry Stebbings 问出了这样一个问题。 Stebbings 提到,现在很多公司都…

赎金信--力扣383

赎金信 题目思路一方法一:哈希表思路二方法二 数组 题目 思路一 我们使用哈希表map的思路,A能不能由B组成,说明B包含的元素个数要大于等于A。 所以我们先利用map的key和value分别对magazine中的出现的字符以及出现的次数存储起来。 然后我们…

力扣题解2552

大家好,欢迎来到无限大的频道。 今天和大家分享的是2552的题解思路。 题目描述: 统计上升四元组 一个长度为 n 下标从 0 开始的整数数组 nums ,它包含 1 到 n 的所有数字,请你返回上升四元组的数目。 如果一个四元组 (i, j, …

RocketMQ异步报错:No route info of this topic

在SpringBoot中发送RocketMQ异步消息的时候报错了,提示org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, testTopic1 这里给出具体的解决方案 一、Broker模块不支持自动创建topic,并且topic没有被手动创建过 R…

智慧教室无纸化方案应用领域和技术实践探究

智慧教室无纸化应用场景 智慧教室无纸化方案在多个领域得到了广泛应用,主要体现在教育领域,但随着技术的发展和应用的深入,其应用范围也在逐渐扩大。以下是一些主要的应用领域: 一、教育领域 课堂教学: 中小学数学课…

BFS迷宫最小路径问题

给定一个迷宫,0表示空地可以走,1表示墙壁不能穿越;在迷宫中可以向(上下左右)四个方向行进; 找到从左上角到右下角的最短路径,并计算最短路径的长度。 迷宫示例如下: 算法步骤&…

org.aspectj.apache.bcel.classfile.ClassFormatException 深度解析

org.aspectj.apache.bcel.classfile.ClassFormatException 深度解析 ### 概述 在前端开发和Java后端交互的复杂环境中,org.aspectj.apache.bcel.classfile.ClassFormatException 作为一个难以预测的异常,时常给开发者带来困扰。这个异常主要与 AspectJ—…

Trigger源码分析 -- ant-design-vue系列

Trigger源码分析 – ant-design-vue系列 1 概述 源码地址: https://github.com/vueComponent/ant-design-vue/blob/main/components/vc-trigger/Trigger.tsx 在源码的实现中,Trigger组件主要有两个作用: 使用Portal组件,把Pop…

迟滞比较器/施密特触发器

功能 从下面原理图像看来,只有在达到上下阈值才会出现输出电平的转换,这样防止信号的杂波跳变。而且每次的阈值是随着输出而变化的,当输出高时,阈值如下图中,V_PV_N V_R*( RF/(R1RF) )VH*( R1/(R1RF) );当输出低时&a…

QT核心机制

目录 学习内容: 1. 对话框 1.1 消息对话框(QMessageBox) 1.2 消息对话框实例 1.3 颜色对话框(QColorDialog)、字体对话框(QFontDialog)、文件对话框(QFileDialog) …

Python面试常见问题及详细解答:从基础到高级概念全覆盖

创作不易,您的打赏、关注、点赞、收藏和转发是我坚持下去的动力! 以下是Python面试中常见的一些问题及其详细答案的整理: 1. Python的可变与不可变对象 问题: 什么是可变对象和不可变对象?举例说明。答案: 可变对象: 可以在原地…

实现卷积层的前向传播(Pythom版)

在TensorFlow框架中,实现卷积层(2维)的代码是 tf.keras.layers.Conv2D()。它主要接收如下几个参数, filters:卷积核的个数,也就是卷积层输出的通道数(沿axis-1的维度) kernel_size&a…

AI秒画损失函数曲线图(Loss Function Curve)

在深度学习模型训练中,Loss曲线图是衡量模型性能的一个重要指标。通过绘制Loss曲线,能够清楚地观察到模型在训练过程中的收敛情况,从而帮助我们判断模型是否出现过拟合或欠拟合。本文将介绍如何通过简单几步,快速绘制出训练的Loss…

iphone16-iphone16pro原壁纸分享

iphone16-iphone16pro原壁纸分享 苹果公司在2024年9月10日的秋季新品发布会上正式推出了iPhone 16系列智能手机。以下是iPhone 16系列的主要特点和更新: 全新A18芯片:iPhone 16系列搭载了苹果最新的A18芯片,这款芯片专为苹果智能(…