【办公类-50-01】20240620自主游戏观察记录表19周内容打乱

背景需求:

又到了期末,各种班级资料需要提交。

有一份自主游戏观察记录需要写19周(每周2次)的观察记录,并根据参考书填写一级、三级、五级的评价指标。

去年中六班的时候,我很认真的手写了21周的户外游戏活动内容,主动成为2个需要提交文本资料的班级。

今年组长选了中二和中五提交打印资料。因此中四班的游戏观察资料可以不那么“优质”,所以本学期我想“偷个懒”,再次使用去年的内容做电子稿提交。

考虑到这套资料也给过其他班级,我担心会出现重复,所以有两个调整的思路:

1、将每个周次的内容进行替换,如原来第1周的内容放到第15周,第13周内容调到第2周。

2、虽然内容没有修改,但至少将孩子的名字替换成新的名字(中四班孩子的小名)

设计过程。

1、原素材

2、模板

3、代码思路

(1)读取原素材表格中各个单元格里面的内容,新建一个excel并保存这些内容

 (2)手动更改小名:因为不确定出现哪些名字,需要把表格拉宽,查看里面的名字。这里程序要会暂停。

(3)改完以后,打乱行的顺序,把文字内容重写排列,

(4)把excel每行内容生成一个docx,把所有doc合并在一起

然后程序把所有的docx合并在一个docx内

部分表格手动调整(删除回车符),确保每个表格内容都在一页上。

代码展示:

'''
项目:期末资料:19周游戏观察记录内容周次调换
工具:星火讯飞、阿夏
时间:2024年6月20日
'''import re
import pandas as pd
from docx import Document
import timefor y in range(5):path = r'C:\Users\jg2yXRZ\OneDrive\桌面\游戏观察记录'# 读取1.docx文件doc = Document(path + r"\中(6)班自主游戏观察记录(202302-202306)全部户外.docx")weeks=19 # 一共几周name1='张三'name2='李四'print('---1、提取原来的游戏观察记录内容-----')# 提取所有段落中“第”和“周”之间的内容results = []for paragraph in doc.paragraphs:content = paragraph.textpattern = r"第(.*?)周"result = re.findall(pattern, content)if result:results.extend(result)# 缩进2字符b='    ' table_data1 = []for table in doc.tables:cell_value1 = table.cell(0, 0).text.replace(" ", "")  # 清除缩进lines1 = cell_value1.split('\n')del lines1[0]  # 删除第一行new_lines1 = [b + line for line in lines1]  # 在每行前面加四个空格new_cell_value1 = '\n'.join(new_lines1)table_data1.append(new_cell_value1)print(new_cell_value1)table_data2 = []for table in doc.tables:cell_value2 = table.cell(2, 0).text.replace(" ", "")   # 清除缩进lines2 = cell_value2.split('\n')del lines2[0]  # 删除第一行new_lines2 = [b + line for line in lines2]  # 在每行前面加四个空格new_cell_value2 = '\n'.join(new_lines2)table_data2.append(new_cell_value2)print(new_cell_value2)table_data3 = []for table in doc.tables:cell_value3 = table.cell(0, 1).text.replace(" ", "")   # 清除缩进lines3 = cell_value3.split('\n')del lines3[0]  # 删除第一行new_lines3 = [b + line for line in lines3]  # 在每行前面加四个空格new_cell_value3 = '\n'.join(new_lines3)table_data3.append(new_cell_value3)print(new_cell_value3)table_data4 = []for table in doc.tables:cell_value4 = table.cell(2, 1).text.replace(" ", "")   # 清除缩进lines4 = cell_value4.split('\n')del lines4[0]  # 删除第一行new_lines4 = [b + line for line in lines4]  # 在每行前面加四个空格new_cell_value4 = '\n'.join(new_lines4)table_data4.append(new_cell_value4)print(new_cell_value4)table_data5= []for table in doc.tables:cell_value5 = table.cell(1, 1).text.replace(" ", "")   # 清除缩进print(cell_value5)table_data5.append(cell_value5[3:])# print(new_cell_value5)table_data6= []for table in doc.tables:cell_value6 = table.cell(3, 1).text.replace(" ", "")   # 清除缩进print(cell_value6)table_data6.append(cell_value6[3:])# print(new_cell_value5) df = pd.DataFrame({'Week': results, 'content1': table_data1,'content2': table_data2,'fx1': table_data3,'fx2': table_data4,'T1': table_data5,'T2': table_data6})df.to_excel(path + '\\数据导出改人名.xlsx', index=False)# 手动改人名print("手动改人名,按任意键继续...")input()  # 这里会暂停程序,直到用户输入信息print("程序继续执行...")print('---2、手动改人名,随机抽取行数,重新保存一份----')import pandas as pd# 读取Excel文件data = pd.read_excel(path + '\\数据导出改人名.xlsx')# 获取行数num_rows = len(data)print(num_rows)# 19# 打乱行顺序shuffled_data = data.sample(frac=1).reset_index(drop=True)# 保存打乱顺序后的数据为新的Excel文件shuffled_data.to_excel(path +r'\更换顺序.xlsx', index=False)# 更改周次和姓名import openpyxl# 打开Excel文件workbook = openpyxl.load_workbook(path +r'\更换顺序.xlsx')# 选择工作表worksheet = workbook.active# 在A列第2行开始写入1-20的数字for i in range(2, num_rows+2):worksheet.cell(row=i, column=1).value = i - 1# 在F列写入教室A的名字for i in range(2, num_rows+2):worksheet.cell(row=i, column=6).value = name1# 在G列写入教室A的名字for i in range(2, num_rows+2):worksheet.cell(row=i, column=7).value = name2time.sleep(2)# 保存修改后的Excel文件workbook.save(path+r'\更换顺序.xlsx')print('---3、写入模板生成新的文件--')import osimport pandas as pdfrom docxtpl import DocxTemplatefile_path = path + r'\04合成2'try:os.mkdir(file_path)except:passlist = pd.read_excel(path + '\\更换顺序.xlsx')Week= list["Week"]content1 = list["content1"].str.rstrip()content2 = list["content2"].str.rstrip()fx1 = list["fx1"].str.rstrip()fx2 = list["fx2"].str.rstrip()T1 = list["T1"].str.rstrip()T2 = list["T2"].str.rstrip()num = list.shape[0]for i, (w, c1, c2, f1, f2 ,t1, t2) in enumerate(zip(Week, content1, content2, fx1,fx2,T1, T2)):context = {"Week": w,"content1": c1, "content2": c2,"fx1": f1,"fx2": f2, "T1": t1,"T2": t2,}tpl = DocxTemplate(path + '\\模版游戏观察记录与反思(2024.1).docx')tpl.render(context)time.sleep(4)tpl.save(file_path + fr"\第{i+1:02d}周.docx")print('---4、合并文档--')import osimport shutilfrom docx import Documentdef merge_docx_files(input_folder, output_file):output_doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\游戏观察记录\04合成2\第01周.docx')   files = os.listdir(input_folder)for index, file in enumerate(files):if file.endswith(".docx") and index != 0:input_file = os.path.join(input_folder, file)input_doc = Document(input_file)# output_doc.add_page_break()  # 添加换页符for element in input_doc.element.body:    output_doc.element.body.append(element)time.sleep(2)output_doc.save(output_file)input_folder = file_pathoutput_file = path+fr"\{y:02d}中4班 游戏活动观察记录(202402-202406)全部户外.docx"merge_docx_files(input_folder, output_file)

存在问题:

本代码有一个问题,就是每次提取的文字会有缺失,原因不明,

所以我就生成多份随机排序的文件,从中挑选一个内容相对多的文件,作为提交的电子稿的资料。

运气好,以下这份文字较为齐全(撑满格子)

哎,偷懒就不能保证打乱文字的稳定性,所以要多抽几次博一个成功的概率,或者还是乖乖的自己手写吧!

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

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

相关文章

具有 Hudi、MinIO 和 HMS 的现代数据湖

Apache Hudi 已成为管理现代数据湖的领先开放表格式之一,直接在现代数据湖中提供核心仓库和数据库功能。这在很大程度上要归功于 Hudi 提供了表、事务、更新/删除、高级索引、流式摄取服务、数据聚类/压缩优化和并发控制等高级功能。 我们已经探讨了 MinIO 和 Hudi…

Vue3 - 在项目中使用vue-i18n不生效的问题

检查和配置 Vue I18n 确保你已经正确安装了Vue I18n并且配置了组合API模式。 安装 Vue I18n npm install vue-i18nnext配置 i18n.js import { createI18n } from vue-i18n; import messages from ./messages;const i18n createI18n({legacy: false, // 使用组合 API 模式l…

Linux检查端口nmap

yum install -y nmap # 查看本机在运行的服务的端口号 nmap 127.0.0.1 补充:netstat netstat -tunlp | grep 3306

读《文明之光》第2册总结

《文明之光》系列大致按照从地球诞生到近现代的顺序讲述了人类文明进程的各个阶段,每个章节相对独立,全景式地展现了人类文明发展历程中的多样性。《文明之光》系列第二册讲述了从近代科学兴起,到工业革命时代,以及原子能应用这一…

C++/Qt 小知识记录7

工作中遇到的一些小问题,总结的小知识记录:C/Qt 小知识7 编译FFMPEG遇到的问题CMakeLists.txt配置FFMPEG的依赖方式: x264在Windows下编译生成*.libVS编译Qt工程时,遇到提示Change Qt Version的情况在QtOsg的窗口上嵌入子窗口&…

基于JSP的交通事故档案管理系统

开头语:你好,我是计算机学长猫哥,如果你对系统有更多的期待或建议,欢迎随时联系我。 开发语言:Java 数据库:MySQL 技术:JSPJava 工具:ECLIPSE、Tomcat 系统展示 首页 管理员界…

车辆数据的提取、定位和融合(其一 共十二篇)

第一篇: System Introduction 第二篇:State of the Art 第三篇:localization 第四篇:Submapping and temporal weighting 第五篇:Mapping of Point-shaped landmark data 第六篇:Clustering of landma…

Dockerfile实战

Dockerfile是用来快速创建自定义镜像的一种文本格式的配置文件,在持续集成和持续部署时,需要使用Dockerfile生成相关应用程序的镜像。 Dockerfile常用命令 FROM:继承基础镜像MAINTAINER:镜像制作作者的信息,已弃用&a…

文件管理—linux(基础IO)

目录 ​编辑 一、C语言文件接口(库函数) hello.c写文件 hello.c读文件 输出信息到显示器 stdin & stdout & stderr 二、系统文件I/O(系统调用) hello.c 写文件: hello.c读文件 接口介绍 open open…

JetBrains PhpStorm 2024 mac/win版:探索PHP之美,智慧编程新境界

JetBrains PhpStorm 2024是一款卓越的PHP集成开发环境(IDE),专为满足现代PHP开发者的需求而精心打造。它凭借强大的功能和出色的性能,赢得了全球开发者的广泛赞誉。 PhpStorm 2024 mac/win版获取 PhpStorm 2024提供了智能的代码编辑功能,包括…

【TKGQA】关于时间知识图谱问答的一篇综述阅读

前言 时间知识图谱问答(TKGQA)是KBQA中一个关注时间问题的重要子任务。时间问题包含时间约束、需要时间标记的答案,反映了现实世界事件的动态和演变性质。 一、TKGQA 1.1 概述 时间知识图谱(TKG): 通常表…

Android 添加自己的时钟小部件

小部件,也叫微件, 它的介绍参考官网 应用 widget 概览 https://developer.android.google.cn/develop/ui/views/appwidgets/overview?hlzh-cn 直接上图,原生系统上,时钟应用的小部件效果。 我也整一个。 1.创建小部件布局文…

tp5学习基本控制器和视图

1 文件结构 正在上传…重新上传取消 application 主要操作目录 extend 扩展 public 入口文件 runtime 运行时文件 thinkphp 核心代码 vendor 三方扩展 2 public/index.php 解析 正在上传…重新上传取消 .htaccess Apache 可写文件 index.php 主目录 router.php 路由文件 3 inde…

【34W字CISSP备考笔记】域1:安全与风险管理

1.1 理解、坚持和弘扬职业道德 1.1.1.(ISC)职业道德规范 1、行为得体、诚实、公正、负责、守法。 2、为委托人提供尽职、合格的服务。 3、促进和保护职业。 4、保护社会、公益、必需的公信和自信,保护基础设施。 1.1.2.组织道德规范 1、RFC 1087 &#xff0…

乳腺癌患者的生存分析:从传统方法到DeepSurv

一、引言 乳腺癌作为全球女性中最常见的癌症之一,其早期诊断和治疗对于提高患者生存率至关重要。随着医学技术和数据分析方法的不断发展,乳腺癌患者的生存分析逐渐成为研究的热点。通过生存分析,我们可以更好地理解疾病进展、预测患者预后&am…

Python发送HTML邮件有哪些步骤?怎么设置?

Python发送HTML邮件如何实现?Python发送邮件的策略? HTML邮件不仅可以包含丰富的文本格式,还可以插入图片、链接和其他多媒体内容,从而提升邮件的美观性和功能性。AokSend将详细介绍Python发送HTML邮件的主要步骤,帮助…

Redis进阶 - Redis 淘汰策略

我们知道Redis是分布式内存数据库,基于内存运行,可是有没有想过比较好的服务器内存也不过几百G,能存多少数据呢,当内存占用满了之后该怎么办呢?Redis的内存是否可以设置限制? 过期的key是怎么从内存中删除的…

【CSS in Depth2精译】1.4 简写属性

文章目录 1.4 简写属性1.4.1 当心简写属性悄悄覆盖其他样式1.4.2 记住简写值的顺序1 上、右、下、左顺序2 先水平、再垂直的顺序 1.4 简写属性 简写属性(Shorthand properties) 是可以一次性设置多个属性值的样式属性。例如, font 就是一个简…

柯桥商务英语培训|老外和你说Tom和Jack,可不是在说人名!所以是啥意思?

小明和小李,这两个人在中国相信没有谁不认识他们了。而且有关他们的梗更是传遍大街小巷。 例如:小明他爷爷活了103岁,小明做数学题,又或者是小李的老婆比小明小2岁等等。 其实在国外,也有这么两个人像小明、小李一样&a…

面向对象的进阶---static

1.static 静态变量 package com.itheima.a01staticdemo01;public class Student {private String name;private int age;public static String teacherName;public Student() {}public Student(String name, int age) {this.name name;this.age age;}/*** 获取* return n…